diff --git a/Data Cleaning and Preprocessing.ipynb b/Data Cleaning and Preprocessing.ipynb new file mode 100644 index 0000000..d6b06f9 --- /dev/null +++ b/Data Cleaning and Preprocessing.ipynb @@ -0,0 +1,1729 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "ead0cca3-7713-4c44-adbe-9bab5c25eedb", + "metadata": {}, + "source": [ + "# Spark Instantiation" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "9ae53d8c-a3c4-4503-af4a-035144eeb37e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'3.1.3'" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Ensure we are using the right kernel\n", + "spark.version" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3295a6d6-fe77-4dc1-bb60-b8f4d560e53c", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import subprocess\n", + "import shutil\n", + "import pandas as pd\n", + "# import sh\n", + "from pyspark.sql.functions import *\n", + "#from pyspark.sql import functions as F\n", + "from pyspark.sql.types import *" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "f7682d0d-4361-4b57-bdf4-25b1f0b8b4f6", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import time\n", + "import subprocess\n", + "\n", + "from pyspark.sql.functions import *\n", + "from pyspark.sql.types import *\n", + "\n", + "from pyspark.sql import SQLContext\n", + "sqlContext = SQLContext(sc)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "19444bc5-06ae-49ba-acdb-9b47e1f066ca", + "metadata": {}, + "outputs": [], + "source": [ + "pd.set_option(\"max_colwidth\", 100)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "bfe6db97-33c7-4a21-8902-f9ae867d7da1", + "metadata": {}, + "outputs": [], + "source": [ + "warnings.filterwarnings(action='ignore')\n", + "spark = SparkSession.builder.getOrCreate()\n", + "\n", + "##Add \"eagerEval.enabled\" to beautify the way Spark DF is displayed\n", + "spark.conf.set(\"spark.sql.repl.eagerEval.enabled\",True)\n", + "\n", + "## To use legacy casting notation for date\n", + "spark.conf.set(\"spark.sql.legacy.timeParserPolicy\",\"LEGACY\")" + ] + }, + { + "cell_type": "markdown", + "id": "2ef495c9-e1a9-426b-95a8-e3a778550d95", + "metadata": {}, + "source": [ + "# Loading the Data" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "2aee859c-6223-44ec-98eb-02c61233a7f0", + "metadata": {}, + "outputs": [], + "source": [ + "from google.cloud import storage\n", + "# !pip install gcsfs --upgrade" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "6828cf58-6ac2-4e79-96b7-c2ae31196094", + "metadata": {}, + "outputs": [], + "source": [ + "path = \"gs://msca-bdp-tweets/final_project/\"\n", + "bucket = 'msca-bdp-tweets/final_project'" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "c7e9dd86-0fc1-4427-87ec-1fa1f60e81f4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Found 50696 items\n", + "-rwx------ 3 root root 0 2023-02-08 13:58 gs://msca-bdp-tweets/final_project/_SUCCESS\n", + "-rwx------ 3 root root 4500466 2023-02-08 13:44 gs://msca-bdp-tweets/final_project/part-00000-aa6d3cb4-7022-4df2-9921-218307589ce2-c000.json\n", + "-rwx------ 3 root root 4107431 2023-02-08 13:44 gs://msca-bdp-tweets/final_project/part-00001-aa6d3cb4-7022-4df2-9921-218307589ce2-c000.json\n", + "-rwx------ 3 root root 4672123 2023-02-08 13:44 gs://msca-bdp-tweets/final_project/part-00002-aa6d3cb4-7022-4df2-9921-218307589ce2-c000.json\n", + "-rwx------ 3 root root 5186684 2023-02-08 13:44 gs://msca-bdp-tweets/final_project/part-00003-aa6d3cb4-7022-4df2-9921-218307589ce2-c000.json\n", + "-rwx------ 3 root root 4729662 2023-02-08 13:44 gs://msca-bdp-tweets/final_project/part-00004-aa6d3cb4-7022-4df2-9921-218307589ce2-c000.json\n", + "-rwx------ 3 root root 4605529 2023-02-08 13:44 gs://msca-bdp-tweets/final_project/part-00005-aa6d3cb4-7022-4df2-9921-218307589ce2-c000.json\n", + "-rwx------ 3 root root 6370756 2023-02-08 13:44 gs://msca-bdp-tweets/final_project/part-00006-aa6d3cb4-7022-4df2-9921-218307589ce2-c000.json\n", + "-rwx------ 3 root root 4894125 2023-02-08 13:44 gs://msca-bdp-tweets/final_project/part-00007-aa6d3cb4-7022-4df2-9921-218307589ce2-c000.json\n" + ] + } + ], + "source": [ + "!hadoop fs -ls 'gs://msca-bdp-tweets/final_project/' | head -10" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "9e05aed3-7bdc-42c9-b5f8-57317dd50635", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 3 µs, sys: 1 µs, total: 4 µs\n", + "Wall time: 7.63 µs\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "23/02/27 14:30:48 WARN org.apache.spark.sql.execution.datasources.SharedInMemoryCache: Evicting cached table partition metadata from memory due to size constraints (spark.sql.hive.filesourcePartitionFileCacheSize = 262144000 bytes). This may impact query planning performance.\n", + "23/02/27 14:36:47 WARN org.apache.spark.sql.catalyst.util.package: Truncated the string representation of a plan since it was too large. This behavior can be adjusted by setting 'spark.sql.debug.maxToStringFields'.\n" + ] + } + ], + "source": [ + "%time\n", + "tweets_df = spark.read.json(path)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "ed52a31d-8247-4cfc-b6a9-f018fa9a997b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "root\n", + " |-- coordinates: struct (nullable = true)\n", + " | |-- coordinates: array (nullable = true)\n", + " | | |-- element: double (containsNull = true)\n", + " | |-- type: string (nullable = true)\n", + " |-- created_at: string (nullable = true)\n", + " |-- display_text_range: array (nullable = true)\n", + " | |-- element: long (containsNull = true)\n", + " |-- entities: struct (nullable = true)\n", + " | |-- hashtags: array (nullable = true)\n", + " | | |-- element: struct (containsNull = true)\n", + " | | | |-- indices: array (nullable = true)\n", + " | | | | |-- element: long (containsNull = true)\n", + " | | | |-- text: string (nullable = true)\n", + " | |-- media: array (nullable = true)\n", + " | | |-- element: struct (containsNull = true)\n", + " | | | |-- additional_media_info: struct (nullable = true)\n", + " | | | | |-- description: string (nullable = true)\n", + " | | | | |-- embeddable: boolean (nullable = true)\n", + " | | | | |-- monetizable: boolean (nullable = true)\n", + " | | | | |-- title: string (nullable = true)\n", + " | | | |-- description: string (nullable = true)\n", + " | | | |-- display_url: string (nullable = true)\n", + " | | | |-- expanded_url: string (nullable = true)\n", + " | | | |-- id: long (nullable = true)\n", + " | | | |-- id_str: string (nullable = true)\n", + " | | | |-- indices: array (nullable = true)\n", + " | | | | |-- element: long (containsNull = true)\n", + " | | | |-- media_url: string (nullable = true)\n", + " | | | |-- media_url_https: string (nullable = true)\n", + " | | | |-- sizes: struct (nullable = true)\n", + " | | | | |-- large: struct (nullable = true)\n", + " | | | | | |-- h: long (nullable = true)\n", + " | | | | | |-- resize: string (nullable = true)\n", + " | | | | | |-- w: long (nullable = true)\n", + " | | | | |-- medium: struct (nullable = true)\n", + " | | | | | |-- h: long (nullable = true)\n", + " | | | | | |-- resize: string (nullable = true)\n", + " | | | | | |-- w: long (nullable = true)\n", + " | | | | |-- small: struct (nullable = true)\n", + " | | | | | |-- h: long (nullable = true)\n", + " | | | | | |-- resize: string (nullable = true)\n", + " | | | | | |-- w: long (nullable = true)\n", + " | | | | |-- thumb: struct (nullable = true)\n", + " | | | | | |-- h: long (nullable = true)\n", + " | | | | | |-- resize: string (nullable = true)\n", + " | | | | | |-- w: long (nullable = true)\n", + " | | | |-- source_status_id: long (nullable = true)\n", + " | | | |-- source_status_id_str: string (nullable = true)\n", + " | | | |-- source_user_id: long (nullable = true)\n", + " | | | |-- source_user_id_str: string (nullable = true)\n", + " | | | |-- type: string (nullable = true)\n", + " | | | |-- url: string (nullable = true)\n", + " | |-- symbols: array (nullable = true)\n", + " | | |-- element: struct (containsNull = true)\n", + " | | | |-- indices: array (nullable = true)\n", + " | | | | |-- element: long (containsNull = true)\n", + " | | | |-- text: string (nullable = true)\n", + " | |-- urls: array (nullable = true)\n", + " | | |-- element: struct (containsNull = true)\n", + " | | | |-- display_url: string (nullable = true)\n", + " | | | |-- expanded_url: string (nullable = true)\n", + " | | | |-- indices: array (nullable = true)\n", + " | | | | |-- element: long (containsNull = true)\n", + " | | | |-- url: string (nullable = true)\n", + " | |-- user_mentions: array (nullable = true)\n", + " | | |-- element: struct (containsNull = true)\n", + " | | | |-- id: long (nullable = true)\n", + " | | | |-- id_str: string (nullable = true)\n", + " | | | |-- indices: array (nullable = true)\n", + " | | | | |-- element: long (containsNull = true)\n", + " | | | |-- name: string (nullable = true)\n", + " | | | |-- screen_name: string (nullable = true)\n", + " |-- extended_entities: struct (nullable = true)\n", + " | |-- media: array (nullable = true)\n", + " | | |-- element: struct (containsNull = true)\n", + " | | | |-- additional_media_info: struct (nullable = true)\n", + " | | | | |-- description: string (nullable = true)\n", + " | | | | |-- embeddable: boolean (nullable = true)\n", + " | | | | |-- monetizable: boolean (nullable = true)\n", + " | | | | |-- title: string (nullable = true)\n", + " | | | |-- description: string (nullable = true)\n", + " | | | |-- display_url: string (nullable = true)\n", + " | | | |-- expanded_url: string (nullable = true)\n", + " | | | |-- id: long (nullable = true)\n", + " | | | |-- id_str: string (nullable = true)\n", + " | | | |-- indices: array (nullable = true)\n", + " | | | | |-- element: long (containsNull = true)\n", + " | | | |-- media_url: string (nullable = true)\n", + " | | | |-- media_url_https: string (nullable = true)\n", + " | | | |-- sizes: struct (nullable = true)\n", + " | | | | |-- large: struct (nullable = true)\n", + " | | | | | |-- h: long (nullable = true)\n", + " | | | | | |-- resize: string (nullable = true)\n", + " | | | | | |-- w: long (nullable = true)\n", + " | | | | |-- medium: struct (nullable = true)\n", + " | | | | | |-- h: long (nullable = true)\n", + " | | | | | |-- resize: string (nullable = true)\n", + " | | | | | |-- w: long (nullable = true)\n", + " | | | | |-- small: struct (nullable = true)\n", + " | | | | | |-- h: long (nullable = true)\n", + " | | | | | |-- resize: string (nullable = true)\n", + " | | | | | |-- w: long (nullable = true)\n", + " | | | | |-- thumb: struct (nullable = true)\n", + " | | | | | |-- h: long (nullable = true)\n", + " | | | | | |-- resize: string (nullable = true)\n", + " | | | | | |-- w: long (nullable = true)\n", + " | | | |-- source_status_id: long (nullable = true)\n", + " | | | |-- source_status_id_str: string (nullable = true)\n", + " | | | |-- source_user_id: long (nullable = true)\n", + " | | | |-- source_user_id_str: string (nullable = true)\n", + " | | | |-- type: string (nullable = true)\n", + " | | | |-- url: string (nullable = true)\n", + " | | | |-- video_info: struct (nullable = true)\n", + " | | | | |-- aspect_ratio: array (nullable = true)\n", + " | | | | | |-- element: long (containsNull = true)\n", + " | | | | |-- duration_millis: long (nullable = true)\n", + " | | | | |-- variants: array (nullable = true)\n", + " | | | | | |-- element: struct (containsNull = true)\n", + " | | | | | | |-- bitrate: long (nullable = true)\n", + " | | | | | | |-- content_type: string (nullable = true)\n", + " | | | | | | |-- url: string (nullable = true)\n", + " |-- extended_tweet: struct (nullable = true)\n", + " | |-- display_text_range: array (nullable = true)\n", + " | | |-- element: long (containsNull = true)\n", + " | |-- entities: struct (nullable = true)\n", + " | | |-- hashtags: array (nullable = true)\n", + " | | | |-- element: struct (containsNull = true)\n", + " | | | | |-- indices: array (nullable = true)\n", + " | | | | | |-- element: long (containsNull = true)\n", + " | | | | |-- text: string (nullable = true)\n", + " | | |-- media: array (nullable = true)\n", + " | | | |-- element: struct (containsNull = true)\n", + " | | | | |-- additional_media_info: struct (nullable = true)\n", + " | | | | | |-- description: string (nullable = true)\n", + " | | | | | |-- embeddable: boolean (nullable = true)\n", + " | | | | | |-- monetizable: boolean (nullable = true)\n", + " | | | | | |-- title: string (nullable = true)\n", + " | | | | |-- description: string (nullable = true)\n", + " | | | | |-- display_url: string (nullable = true)\n", + " | | | | |-- expanded_url: string (nullable = true)\n", + " | | | | |-- id: long (nullable = true)\n", + " | | | | |-- id_str: string (nullable = true)\n", + " | | | | |-- indices: array (nullable = true)\n", + " | | | | | |-- element: long (containsNull = true)\n", + " | | | | |-- media_url: string (nullable = true)\n", + " | | | | |-- media_url_https: string (nullable = true)\n", + " | | | | |-- sizes: struct (nullable = true)\n", + " | | | | | |-- large: struct (nullable = true)\n", + " | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | |-- w: long (nullable = true)\n", + " | | | | | |-- medium: struct (nullable = true)\n", + " | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | |-- w: long (nullable = true)\n", + " | | | | | |-- small: struct (nullable = true)\n", + " | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | |-- w: long (nullable = true)\n", + " | | | | | |-- thumb: struct (nullable = true)\n", + " | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | |-- w: long (nullable = true)\n", + " | | | | |-- source_status_id: long (nullable = true)\n", + " | | | | |-- source_status_id_str: string (nullable = true)\n", + " | | | | |-- source_user_id: long (nullable = true)\n", + " | | | | |-- source_user_id_str: string (nullable = true)\n", + " | | | | |-- type: string (nullable = true)\n", + " | | | | |-- url: string (nullable = true)\n", + " | | | | |-- video_info: struct (nullable = true)\n", + " | | | | | |-- aspect_ratio: array (nullable = true)\n", + " | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | |-- duration_millis: long (nullable = true)\n", + " | | | | | |-- variants: array (nullable = true)\n", + " | | | | | | |-- element: struct (containsNull = true)\n", + " | | | | | | | |-- bitrate: long (nullable = true)\n", + " | | | | | | | |-- content_type: string (nullable = true)\n", + " | | | | | | | |-- url: string (nullable = true)\n", + " | | |-- symbols: array (nullable = true)\n", + " | | | |-- element: struct (containsNull = true)\n", + " | | | | |-- indices: array (nullable = true)\n", + " | | | | | |-- element: long (containsNull = true)\n", + " | | | | |-- text: string (nullable = true)\n", + " | | |-- urls: array (nullable = true)\n", + " | | | |-- element: struct (containsNull = true)\n", + " | | | | |-- display_url: string (nullable = true)\n", + " | | | | |-- expanded_url: string (nullable = true)\n", + " | | | | |-- indices: array (nullable = true)\n", + " | | | | | |-- element: long (containsNull = true)\n", + " | | | | |-- url: string (nullable = true)\n", + " | | |-- user_mentions: array (nullable = true)\n", + " | | | |-- element: struct (containsNull = true)\n", + " | | | | |-- id: long (nullable = true)\n", + " | | | | |-- id_str: string (nullable = true)\n", + " | | | | |-- indices: array (nullable = true)\n", + " | | | | | |-- element: long (containsNull = true)\n", + " | | | | |-- name: string (nullable = true)\n", + " | | | | |-- screen_name: string (nullable = true)\n", + " | |-- extended_entities: struct (nullable = true)\n", + " | | |-- media: array (nullable = true)\n", + " | | | |-- element: struct (containsNull = true)\n", + " | | | | |-- additional_media_info: struct (nullable = true)\n", + " | | | | | |-- description: string (nullable = true)\n", + " | | | | | |-- embeddable: boolean (nullable = true)\n", + " | | | | | |-- monetizable: boolean (nullable = true)\n", + " | | | | | |-- title: string (nullable = true)\n", + " | | | | |-- description: string (nullable = true)\n", + " | | | | |-- display_url: string (nullable = true)\n", + " | | | | |-- expanded_url: string (nullable = true)\n", + " | | | | |-- id: long (nullable = true)\n", + " | | | | |-- id_str: string (nullable = true)\n", + " | | | | |-- indices: array (nullable = true)\n", + " | | | | | |-- element: long (containsNull = true)\n", + " | | | | |-- media_url: string (nullable = true)\n", + " | | | | |-- media_url_https: string (nullable = true)\n", + " | | | | |-- sizes: struct (nullable = true)\n", + " | | | | | |-- large: struct (nullable = true)\n", + " | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | |-- w: long (nullable = true)\n", + " | | | | | |-- medium: struct (nullable = true)\n", + " | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | |-- w: long (nullable = true)\n", + " | | | | | |-- small: struct (nullable = true)\n", + " | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | |-- w: long (nullable = true)\n", + " | | | | | |-- thumb: struct (nullable = true)\n", + " | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | |-- w: long (nullable = true)\n", + " | | | | |-- source_status_id: long (nullable = true)\n", + " | | | | |-- source_status_id_str: string (nullable = true)\n", + " | | | | |-- source_user_id: long (nullable = true)\n", + " | | | | |-- source_user_id_str: string (nullable = true)\n", + " | | | | |-- type: string (nullable = true)\n", + " | | | | |-- url: string (nullable = true)\n", + " | | | | |-- video_info: struct (nullable = true)\n", + " | | | | | |-- aspect_ratio: array (nullable = true)\n", + " | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | |-- duration_millis: long (nullable = true)\n", + " | | | | | |-- variants: array (nullable = true)\n", + " | | | | | | |-- element: struct (containsNull = true)\n", + " | | | | | | | |-- bitrate: long (nullable = true)\n", + " | | | | | | | |-- content_type: string (nullable = true)\n", + " | | | | | | | |-- url: string (nullable = true)\n", + " | |-- full_text: string (nullable = true)\n", + " |-- favorite_count: long (nullable = true)\n", + " |-- favorited: boolean (nullable = true)\n", + " |-- filter_level: string (nullable = true)\n", + " |-- geo: struct (nullable = true)\n", + " | |-- coordinates: array (nullable = true)\n", + " | | |-- element: double (containsNull = true)\n", + " | |-- type: string (nullable = true)\n", + " |-- id: long (nullable = true)\n", + " |-- id_str: string (nullable = true)\n", + " |-- in_reply_to_screen_name: string (nullable = true)\n", + " |-- in_reply_to_status_id: long (nullable = true)\n", + " |-- in_reply_to_status_id_str: string (nullable = true)\n", + " |-- in_reply_to_user_id: long (nullable = true)\n", + " |-- in_reply_to_user_id_str: string (nullable = true)\n", + " |-- is_quote_status: boolean (nullable = true)\n", + " |-- lang: string (nullable = true)\n", + " |-- place: struct (nullable = true)\n", + " | |-- bounding_box: struct (nullable = true)\n", + " | | |-- coordinates: array (nullable = true)\n", + " | | | |-- element: array (containsNull = true)\n", + " | | | | |-- element: array (containsNull = true)\n", + " | | | | | |-- element: double (containsNull = true)\n", + " | | |-- type: string (nullable = true)\n", + " | |-- country: string (nullable = true)\n", + " | |-- country_code: string (nullable = true)\n", + " | |-- full_name: string (nullable = true)\n", + " | |-- id: string (nullable = true)\n", + " | |-- name: string (nullable = true)\n", + " | |-- place_type: string (nullable = true)\n", + " | |-- url: string (nullable = true)\n", + " |-- possibly_sensitive: boolean (nullable = true)\n", + " |-- quote_count: long (nullable = true)\n", + " |-- quoted_status: struct (nullable = true)\n", + " | |-- coordinates: struct (nullable = true)\n", + " | | |-- coordinates: array (nullable = true)\n", + " | | | |-- element: double (containsNull = true)\n", + " | | |-- type: string (nullable = true)\n", + " | |-- created_at: string (nullable = true)\n", + " | |-- display_text_range: array (nullable = true)\n", + " | | |-- element: long (containsNull = true)\n", + " | |-- entities: struct (nullable = true)\n", + " | | |-- hashtags: array (nullable = true)\n", + " | | | |-- element: struct (containsNull = true)\n", + " | | | | |-- indices: array (nullable = true)\n", + " | | | | | |-- element: long (containsNull = true)\n", + " | | | | |-- text: string (nullable = true)\n", + " | | |-- media: array (nullable = true)\n", + " | | | |-- element: struct (containsNull = true)\n", + " | | | | |-- additional_media_info: struct (nullable = true)\n", + " | | | | | |-- description: string (nullable = true)\n", + " | | | | | |-- embeddable: boolean (nullable = true)\n", + " | | | | | |-- monetizable: boolean (nullable = true)\n", + " | | | | | |-- title: string (nullable = true)\n", + " | | | | |-- description: string (nullable = true)\n", + " | | | | |-- display_url: string (nullable = true)\n", + " | | | | |-- expanded_url: string (nullable = true)\n", + " | | | | |-- id: long (nullable = true)\n", + " | | | | |-- id_str: string (nullable = true)\n", + " | | | | |-- indices: array (nullable = true)\n", + " | | | | | |-- element: long (containsNull = true)\n", + " | | | | |-- media_url: string (nullable = true)\n", + " | | | | |-- media_url_https: string (nullable = true)\n", + " | | | | |-- sizes: struct (nullable = true)\n", + " | | | | | |-- large: struct (nullable = true)\n", + " | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | |-- w: long (nullable = true)\n", + " | | | | | |-- medium: struct (nullable = true)\n", + " | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | |-- w: long (nullable = true)\n", + " | | | | | |-- small: struct (nullable = true)\n", + " | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | |-- w: long (nullable = true)\n", + " | | | | | |-- thumb: struct (nullable = true)\n", + " | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | |-- w: long (nullable = true)\n", + " | | | | |-- source_status_id: long (nullable = true)\n", + " | | | | |-- source_status_id_str: string (nullable = true)\n", + " | | | | |-- source_user_id: long (nullable = true)\n", + " | | | | |-- source_user_id_str: string (nullable = true)\n", + " | | | | |-- type: string (nullable = true)\n", + " | | | | |-- url: string (nullable = true)\n", + " | | |-- symbols: array (nullable = true)\n", + " | | | |-- element: struct (containsNull = true)\n", + " | | | | |-- indices: array (nullable = true)\n", + " | | | | | |-- element: long (containsNull = true)\n", + " | | | | |-- text: string (nullable = true)\n", + " | | |-- urls: array (nullable = true)\n", + " | | | |-- element: struct (containsNull = true)\n", + " | | | | |-- display_url: string (nullable = true)\n", + " | | | | |-- expanded_url: string (nullable = true)\n", + " | | | | |-- indices: array (nullable = true)\n", + " | | | | | |-- element: long (containsNull = true)\n", + " | | | | |-- url: string (nullable = true)\n", + " | | |-- user_mentions: array (nullable = true)\n", + " | | | |-- element: struct (containsNull = true)\n", + " | | | | |-- id: long (nullable = true)\n", + " | | | | |-- id_str: string (nullable = true)\n", + " | | | | |-- indices: array (nullable = true)\n", + " | | | | | |-- element: long (containsNull = true)\n", + " | | | | |-- name: string (nullable = true)\n", + " | | | | |-- screen_name: string (nullable = true)\n", + " | |-- extended_entities: struct (nullable = true)\n", + " | | |-- media: array (nullable = true)\n", + " | | | |-- element: struct (containsNull = true)\n", + " | | | | |-- additional_media_info: struct (nullable = true)\n", + " | | | | | |-- description: string (nullable = true)\n", + " | | | | | |-- embeddable: boolean (nullable = true)\n", + " | | | | | |-- monetizable: boolean (nullable = true)\n", + " | | | | | |-- title: string (nullable = true)\n", + " | | | | |-- description: string (nullable = true)\n", + " | | | | |-- display_url: string (nullable = true)\n", + " | | | | |-- expanded_url: string (nullable = true)\n", + " | | | | |-- id: long (nullable = true)\n", + " | | | | |-- id_str: string (nullable = true)\n", + " | | | | |-- indices: array (nullable = true)\n", + " | | | | | |-- element: long (containsNull = true)\n", + " | | | | |-- media_url: string (nullable = true)\n", + " | | | | |-- media_url_https: string (nullable = true)\n", + " | | | | |-- sizes: struct (nullable = true)\n", + " | | | | | |-- large: struct (nullable = true)\n", + " | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | |-- w: long (nullable = true)\n", + " | | | | | |-- medium: struct (nullable = true)\n", + " | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | |-- w: long (nullable = true)\n", + " | | | | | |-- small: struct (nullable = true)\n", + " | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | |-- w: long (nullable = true)\n", + " | | | | | |-- thumb: struct (nullable = true)\n", + " | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | |-- w: long (nullable = true)\n", + " | | | | |-- source_status_id: long (nullable = true)\n", + " | | | | |-- source_status_id_str: string (nullable = true)\n", + " | | | | |-- source_user_id: long (nullable = true)\n", + " | | | | |-- source_user_id_str: string (nullable = true)\n", + " | | | | |-- type: string (nullable = true)\n", + " | | | | |-- url: string (nullable = true)\n", + " | | | | |-- video_info: struct (nullable = true)\n", + " | | | | | |-- aspect_ratio: array (nullable = true)\n", + " | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | |-- duration_millis: long (nullable = true)\n", + " | | | | | |-- variants: array (nullable = true)\n", + " | | | | | | |-- element: struct (containsNull = true)\n", + " | | | | | | | |-- bitrate: long (nullable = true)\n", + " | | | | | | | |-- content_type: string (nullable = true)\n", + " | | | | | | | |-- url: string (nullable = true)\n", + " | |-- extended_tweet: struct (nullable = true)\n", + " | | |-- display_text_range: array (nullable = true)\n", + " | | | |-- element: long (containsNull = true)\n", + " | | |-- entities: struct (nullable = true)\n", + " | | | |-- hashtags: array (nullable = true)\n", + " | | | | |-- element: struct (containsNull = true)\n", + " | | | | | |-- indices: array (nullable = true)\n", + " | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | |-- text: string (nullable = true)\n", + " | | | |-- media: array (nullable = true)\n", + " | | | | |-- element: struct (containsNull = true)\n", + " | | | | | |-- additional_media_info: struct (nullable = true)\n", + " | | | | | | |-- description: string (nullable = true)\n", + " | | | | | | |-- embeddable: boolean (nullable = true)\n", + " | | | | | | |-- monetizable: boolean (nullable = true)\n", + " | | | | | | |-- title: string (nullable = true)\n", + " | | | | | |-- description: string (nullable = true)\n", + " | | | | | |-- display_url: string (nullable = true)\n", + " | | | | | |-- expanded_url: string (nullable = true)\n", + " | | | | | |-- id: long (nullable = true)\n", + " | | | | | |-- id_str: string (nullable = true)\n", + " | | | | | |-- indices: array (nullable = true)\n", + " | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | |-- media_url: string (nullable = true)\n", + " | | | | | |-- media_url_https: string (nullable = true)\n", + " | | | | | |-- sizes: struct (nullable = true)\n", + " | | | | | | |-- large: struct (nullable = true)\n", + " | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | |-- medium: struct (nullable = true)\n", + " | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | |-- small: struct (nullable = true)\n", + " | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | |-- thumb: struct (nullable = true)\n", + " | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | |-- source_status_id: long (nullable = true)\n", + " | | | | | |-- source_status_id_str: string (nullable = true)\n", + " | | | | | |-- source_user_id: long (nullable = true)\n", + " | | | | | |-- source_user_id_str: string (nullable = true)\n", + " | | | | | |-- type: string (nullable = true)\n", + " | | | | | |-- url: string (nullable = true)\n", + " | | | | | |-- video_info: struct (nullable = true)\n", + " | | | | | | |-- aspect_ratio: array (nullable = true)\n", + " | | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | | |-- duration_millis: long (nullable = true)\n", + " | | | | | | |-- variants: array (nullable = true)\n", + " | | | | | | | |-- element: struct (containsNull = true)\n", + " | | | | | | | | |-- bitrate: long (nullable = true)\n", + " | | | | | | | | |-- content_type: string (nullable = true)\n", + " | | | | | | | | |-- url: string (nullable = true)\n", + " | | | |-- symbols: array (nullable = true)\n", + " | | | | |-- element: struct (containsNull = true)\n", + " | | | | | |-- indices: array (nullable = true)\n", + " | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | |-- text: string (nullable = true)\n", + " | | | |-- urls: array (nullable = true)\n", + " | | | | |-- element: struct (containsNull = true)\n", + " | | | | | |-- display_url: string (nullable = true)\n", + " | | | | | |-- expanded_url: string (nullable = true)\n", + " | | | | | |-- indices: array (nullable = true)\n", + " | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | |-- url: string (nullable = true)\n", + " | | | |-- user_mentions: array (nullable = true)\n", + " | | | | |-- element: struct (containsNull = true)\n", + " | | | | | |-- id: long (nullable = true)\n", + " | | | | | |-- id_str: string (nullable = true)\n", + " | | | | | |-- indices: array (nullable = true)\n", + " | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | |-- name: string (nullable = true)\n", + " | | | | | |-- screen_name: string (nullable = true)\n", + " | | |-- extended_entities: struct (nullable = true)\n", + " | | | |-- media: array (nullable = true)\n", + " | | | | |-- element: struct (containsNull = true)\n", + " | | | | | |-- additional_media_info: struct (nullable = true)\n", + " | | | | | | |-- description: string (nullable = true)\n", + " | | | | | | |-- embeddable: boolean (nullable = true)\n", + " | | | | | | |-- monetizable: boolean (nullable = true)\n", + " | | | | | | |-- title: string (nullable = true)\n", + " | | | | | |-- description: string (nullable = true)\n", + " | | | | | |-- display_url: string (nullable = true)\n", + " | | | | | |-- expanded_url: string (nullable = true)\n", + " | | | | | |-- id: long (nullable = true)\n", + " | | | | | |-- id_str: string (nullable = true)\n", + " | | | | | |-- indices: array (nullable = true)\n", + " | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | |-- media_url: string (nullable = true)\n", + " | | | | | |-- media_url_https: string (nullable = true)\n", + " | | | | | |-- sizes: struct (nullable = true)\n", + " | | | | | | |-- large: struct (nullable = true)\n", + " | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | |-- medium: struct (nullable = true)\n", + " | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | |-- small: struct (nullable = true)\n", + " | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | |-- thumb: struct (nullable = true)\n", + " | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | |-- source_status_id: long (nullable = true)\n", + " | | | | | |-- source_status_id_str: string (nullable = true)\n", + " | | | | | |-- source_user_id: long (nullable = true)\n", + " | | | | | |-- source_user_id_str: string (nullable = true)\n", + " | | | | | |-- type: string (nullable = true)\n", + " | | | | | |-- url: string (nullable = true)\n", + " | | | | | |-- video_info: struct (nullable = true)\n", + " | | | | | | |-- aspect_ratio: array (nullable = true)\n", + " | | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | | |-- duration_millis: long (nullable = true)\n", + " | | | | | | |-- variants: array (nullable = true)\n", + " | | | | | | | |-- element: struct (containsNull = true)\n", + " | | | | | | | | |-- bitrate: long (nullable = true)\n", + " | | | | | | | | |-- content_type: string (nullable = true)\n", + " | | | | | | | | |-- url: string (nullable = true)\n", + " | | |-- full_text: string (nullable = true)\n", + " | |-- favorite_count: long (nullable = true)\n", + " | |-- favorited: boolean (nullable = true)\n", + " | |-- filter_level: string (nullable = true)\n", + " | |-- geo: struct (nullable = true)\n", + " | | |-- coordinates: array (nullable = true)\n", + " | | | |-- element: double (containsNull = true)\n", + " | | |-- type: string (nullable = true)\n", + " | |-- id: long (nullable = true)\n", + " | |-- id_str: string (nullable = true)\n", + " | |-- in_reply_to_screen_name: string (nullable = true)\n", + " | |-- in_reply_to_status_id: long (nullable = true)\n", + " | |-- in_reply_to_status_id_str: string (nullable = true)\n", + " | |-- in_reply_to_user_id: long (nullable = true)\n", + " | |-- in_reply_to_user_id_str: string (nullable = true)\n", + " | |-- is_quote_status: boolean (nullable = true)\n", + " | |-- lang: string (nullable = true)\n", + " | |-- place: struct (nullable = true)\n", + " | | |-- bounding_box: struct (nullable = true)\n", + " | | | |-- coordinates: array (nullable = true)\n", + " | | | | |-- element: array (containsNull = true)\n", + " | | | | | |-- element: array (containsNull = true)\n", + " | | | | | | |-- element: double (containsNull = true)\n", + " | | | |-- type: string (nullable = true)\n", + " | | |-- country: string (nullable = true)\n", + " | | |-- country_code: string (nullable = true)\n", + " | | |-- full_name: string (nullable = true)\n", + " | | |-- id: string (nullable = true)\n", + " | | |-- name: string (nullable = true)\n", + " | | |-- place_type: string (nullable = true)\n", + " | | |-- url: string (nullable = true)\n", + " | |-- possibly_sensitive: boolean (nullable = true)\n", + " | |-- quote_count: long (nullable = true)\n", + " | |-- quoted_status_id: long (nullable = true)\n", + " | |-- quoted_status_id_str: string (nullable = true)\n", + " | |-- reply_count: long (nullable = true)\n", + " | |-- retweet_count: long (nullable = true)\n", + " | |-- retweeted: boolean (nullable = true)\n", + " | |-- scopes: struct (nullable = true)\n", + " | | |-- followers: boolean (nullable = true)\n", + " | |-- source: string (nullable = true)\n", + " | |-- text: string (nullable = true)\n", + " | |-- truncated: boolean (nullable = true)\n", + " | |-- user: struct (nullable = true)\n", + " | | |-- contributors_enabled: boolean (nullable = true)\n", + " | | |-- created_at: string (nullable = true)\n", + " | | |-- default_profile: boolean (nullable = true)\n", + " | | |-- default_profile_image: boolean (nullable = true)\n", + " | | |-- description: string (nullable = true)\n", + " | | |-- favourites_count: long (nullable = true)\n", + " | | |-- followers_count: long (nullable = true)\n", + " | | |-- friends_count: long (nullable = true)\n", + " | | |-- geo_enabled: boolean (nullable = true)\n", + " | | |-- id: long (nullable = true)\n", + " | | |-- id_str: string (nullable = true)\n", + " | | |-- is_translator: boolean (nullable = true)\n", + " | | |-- listed_count: long (nullable = true)\n", + " | | |-- location: string (nullable = true)\n", + " | | |-- name: string (nullable = true)\n", + " | | |-- profile_background_color: string (nullable = true)\n", + " | | |-- profile_background_image_url: string (nullable = true)\n", + " | | |-- profile_background_image_url_https: string (nullable = true)\n", + " | | |-- profile_background_tile: boolean (nullable = true)\n", + " | | |-- profile_banner_url: string (nullable = true)\n", + " | | |-- profile_image_url: string (nullable = true)\n", + " | | |-- profile_image_url_https: string (nullable = true)\n", + " | | |-- profile_link_color: string (nullable = true)\n", + " | | |-- profile_sidebar_border_color: string (nullable = true)\n", + " | | |-- profile_sidebar_fill_color: string (nullable = true)\n", + " | | |-- profile_text_color: string (nullable = true)\n", + " | | |-- profile_use_background_image: boolean (nullable = true)\n", + " | | |-- protected: boolean (nullable = true)\n", + " | | |-- screen_name: string (nullable = true)\n", + " | | |-- statuses_count: long (nullable = true)\n", + " | | |-- translator_type: string (nullable = true)\n", + " | | |-- url: string (nullable = true)\n", + " | | |-- verified: boolean (nullable = true)\n", + " | | |-- verified_type: string (nullable = true)\n", + " | | |-- withheld_in_countries: array (nullable = true)\n", + " | | | |-- element: string (containsNull = true)\n", + " | |-- withheld_copyright: boolean (nullable = true)\n", + " | |-- withheld_in_countries: array (nullable = true)\n", + " | | |-- element: string (containsNull = true)\n", + " |-- quoted_status_id: long (nullable = true)\n", + " |-- quoted_status_id_str: string (nullable = true)\n", + " |-- quoted_status_permalink: struct (nullable = true)\n", + " | |-- display: string (nullable = true)\n", + " | |-- expanded: string (nullable = true)\n", + " | |-- url: string (nullable = true)\n", + " |-- quoted_text: string (nullable = true)\n", + " |-- reply_count: long (nullable = true)\n", + " |-- retweet_count: long (nullable = true)\n", + " |-- retweeted: string (nullable = true)\n", + " |-- retweeted_from: string (nullable = true)\n", + " |-- retweeted_status: struct (nullable = true)\n", + " | |-- coordinates: struct (nullable = true)\n", + " | | |-- coordinates: array (nullable = true)\n", + " | | | |-- element: double (containsNull = true)\n", + " | | |-- type: string (nullable = true)\n", + " | |-- created_at: string (nullable = true)\n", + " | |-- display_text_range: array (nullable = true)\n", + " | | |-- element: long (containsNull = true)\n", + " | |-- entities: struct (nullable = true)\n", + " | | |-- hashtags: array (nullable = true)\n", + " | | | |-- element: struct (containsNull = true)\n", + " | | | | |-- indices: array (nullable = true)\n", + " | | | | | |-- element: long (containsNull = true)\n", + " | | | | |-- text: string (nullable = true)\n", + " | | |-- media: array (nullable = true)\n", + " | | | |-- element: struct (containsNull = true)\n", + " | | | | |-- additional_media_info: struct (nullable = true)\n", + " | | | | | |-- description: string (nullable = true)\n", + " | | | | | |-- embeddable: boolean (nullable = true)\n", + " | | | | | |-- monetizable: boolean (nullable = true)\n", + " | | | | | |-- title: string (nullable = true)\n", + " | | | | |-- description: string (nullable = true)\n", + " | | | | |-- display_url: string (nullable = true)\n", + " | | | | |-- expanded_url: string (nullable = true)\n", + " | | | | |-- id: long (nullable = true)\n", + " | | | | |-- id_str: string (nullable = true)\n", + " | | | | |-- indices: array (nullable = true)\n", + " | | | | | |-- element: long (containsNull = true)\n", + " | | | | |-- media_url: string (nullable = true)\n", + " | | | | |-- media_url_https: string (nullable = true)\n", + " | | | | |-- sizes: struct (nullable = true)\n", + " | | | | | |-- large: struct (nullable = true)\n", + " | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | |-- w: long (nullable = true)\n", + " | | | | | |-- medium: struct (nullable = true)\n", + " | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | |-- w: long (nullable = true)\n", + " | | | | | |-- small: struct (nullable = true)\n", + " | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | |-- w: long (nullable = true)\n", + " | | | | | |-- thumb: struct (nullable = true)\n", + " | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | |-- w: long (nullable = true)\n", + " | | | | |-- source_status_id: long (nullable = true)\n", + " | | | | |-- source_status_id_str: string (nullable = true)\n", + " | | | | |-- source_user_id: long (nullable = true)\n", + " | | | | |-- source_user_id_str: string (nullable = true)\n", + " | | | | |-- type: string (nullable = true)\n", + " | | | | |-- url: string (nullable = true)\n", + " | | |-- symbols: array (nullable = true)\n", + " | | | |-- element: struct (containsNull = true)\n", + " | | | | |-- indices: array (nullable = true)\n", + " | | | | | |-- element: long (containsNull = true)\n", + " | | | | |-- text: string (nullable = true)\n", + " | | |-- urls: array (nullable = true)\n", + " | | | |-- element: struct (containsNull = true)\n", + " | | | | |-- display_url: string (nullable = true)\n", + " | | | | |-- expanded_url: string (nullable = true)\n", + " | | | | |-- indices: array (nullable = true)\n", + " | | | | | |-- element: long (containsNull = true)\n", + " | | | | |-- url: string (nullable = true)\n", + " | | |-- user_mentions: array (nullable = true)\n", + " | | | |-- element: struct (containsNull = true)\n", + " | | | | |-- id: long (nullable = true)\n", + " | | | | |-- id_str: string (nullable = true)\n", + " | | | | |-- indices: array (nullable = true)\n", + " | | | | | |-- element: long (containsNull = true)\n", + " | | | | |-- name: string (nullable = true)\n", + " | | | | |-- screen_name: string (nullable = true)\n", + " | |-- extended_entities: struct (nullable = true)\n", + " | | |-- media: array (nullable = true)\n", + " | | | |-- element: struct (containsNull = true)\n", + " | | | | |-- additional_media_info: struct (nullable = true)\n", + " | | | | | |-- description: string (nullable = true)\n", + " | | | | | |-- embeddable: boolean (nullable = true)\n", + " | | | | | |-- monetizable: boolean (nullable = true)\n", + " | | | | | |-- title: string (nullable = true)\n", + " | | | | |-- description: string (nullable = true)\n", + " | | | | |-- display_url: string (nullable = true)\n", + " | | | | |-- expanded_url: string (nullable = true)\n", + " | | | | |-- id: long (nullable = true)\n", + " | | | | |-- id_str: string (nullable = true)\n", + " | | | | |-- indices: array (nullable = true)\n", + " | | | | | |-- element: long (containsNull = true)\n", + " | | | | |-- media_url: string (nullable = true)\n", + " | | | | |-- media_url_https: string (nullable = true)\n", + " | | | | |-- sizes: struct (nullable = true)\n", + " | | | | | |-- large: struct (nullable = true)\n", + " | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | |-- w: long (nullable = true)\n", + " | | | | | |-- medium: struct (nullable = true)\n", + " | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | |-- w: long (nullable = true)\n", + " | | | | | |-- small: struct (nullable = true)\n", + " | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | |-- w: long (nullable = true)\n", + " | | | | | |-- thumb: struct (nullable = true)\n", + " | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | |-- w: long (nullable = true)\n", + " | | | | |-- source_status_id: long (nullable = true)\n", + " | | | | |-- source_status_id_str: string (nullable = true)\n", + " | | | | |-- source_user_id: long (nullable = true)\n", + " | | | | |-- source_user_id_str: string (nullable = true)\n", + " | | | | |-- type: string (nullable = true)\n", + " | | | | |-- url: string (nullable = true)\n", + " | | | | |-- video_info: struct (nullable = true)\n", + " | | | | | |-- aspect_ratio: array (nullable = true)\n", + " | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | |-- duration_millis: long (nullable = true)\n", + " | | | | | |-- variants: array (nullable = true)\n", + " | | | | | | |-- element: struct (containsNull = true)\n", + " | | | | | | | |-- bitrate: long (nullable = true)\n", + " | | | | | | | |-- content_type: string (nullable = true)\n", + " | | | | | | | |-- url: string (nullable = true)\n", + " | |-- extended_tweet: struct (nullable = true)\n", + " | | |-- display_text_range: array (nullable = true)\n", + " | | | |-- element: long (containsNull = true)\n", + " | | |-- entities: struct (nullable = true)\n", + " | | | |-- hashtags: array (nullable = true)\n", + " | | | | |-- element: struct (containsNull = true)\n", + " | | | | | |-- indices: array (nullable = true)\n", + " | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | |-- text: string (nullable = true)\n", + " | | | |-- media: array (nullable = true)\n", + " | | | | |-- element: struct (containsNull = true)\n", + " | | | | | |-- additional_media_info: struct (nullable = true)\n", + " | | | | | | |-- description: string (nullable = true)\n", + " | | | | | | |-- embeddable: boolean (nullable = true)\n", + " | | | | | | |-- monetizable: boolean (nullable = true)\n", + " | | | | | | |-- title: string (nullable = true)\n", + " | | | | | |-- description: string (nullable = true)\n", + " | | | | | |-- display_url: string (nullable = true)\n", + " | | | | | |-- expanded_url: string (nullable = true)\n", + " | | | | | |-- id: long (nullable = true)\n", + " | | | | | |-- id_str: string (nullable = true)\n", + " | | | | | |-- indices: array (nullable = true)\n", + " | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | |-- media_url: string (nullable = true)\n", + " | | | | | |-- media_url_https: string (nullable = true)\n", + " | | | | | |-- sizes: struct (nullable = true)\n", + " | | | | | | |-- large: struct (nullable = true)\n", + " | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | |-- medium: struct (nullable = true)\n", + " | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | |-- small: struct (nullable = true)\n", + " | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | |-- thumb: struct (nullable = true)\n", + " | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | |-- source_status_id: long (nullable = true)\n", + " | | | | | |-- source_status_id_str: string (nullable = true)\n", + " | | | | | |-- source_user_id: long (nullable = true)\n", + " | | | | | |-- source_user_id_str: string (nullable = true)\n", + " | | | | | |-- type: string (nullable = true)\n", + " | | | | | |-- url: string (nullable = true)\n", + " | | | | | |-- video_info: struct (nullable = true)\n", + " | | | | | | |-- aspect_ratio: array (nullable = true)\n", + " | | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | | |-- duration_millis: long (nullable = true)\n", + " | | | | | | |-- variants: array (nullable = true)\n", + " | | | | | | | |-- element: struct (containsNull = true)\n", + " | | | | | | | | |-- bitrate: long (nullable = true)\n", + " | | | | | | | | |-- content_type: string (nullable = true)\n", + " | | | | | | | | |-- url: string (nullable = true)\n", + " | | | |-- symbols: array (nullable = true)\n", + " | | | | |-- element: struct (containsNull = true)\n", + " | | | | | |-- indices: array (nullable = true)\n", + " | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | |-- text: string (nullable = true)\n", + " | | | |-- urls: array (nullable = true)\n", + " | | | | |-- element: struct (containsNull = true)\n", + " | | | | | |-- display_url: string (nullable = true)\n", + " | | | | | |-- expanded_url: string (nullable = true)\n", + " | | | | | |-- indices: array (nullable = true)\n", + " | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | |-- url: string (nullable = true)\n", + " | | | |-- user_mentions: array (nullable = true)\n", + " | | | | |-- element: struct (containsNull = true)\n", + " | | | | | |-- id: long (nullable = true)\n", + " | | | | | |-- id_str: string (nullable = true)\n", + " | | | | | |-- indices: array (nullable = true)\n", + " | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | |-- name: string (nullable = true)\n", + " | | | | | |-- screen_name: string (nullable = true)\n", + " | | |-- extended_entities: struct (nullable = true)\n", + " | | | |-- media: array (nullable = true)\n", + " | | | | |-- element: struct (containsNull = true)\n", + " | | | | | |-- additional_media_info: struct (nullable = true)\n", + " | | | | | | |-- description: string (nullable = true)\n", + " | | | | | | |-- embeddable: boolean (nullable = true)\n", + " | | | | | | |-- monetizable: boolean (nullable = true)\n", + " | | | | | | |-- title: string (nullable = true)\n", + " | | | | | |-- description: string (nullable = true)\n", + " | | | | | |-- display_url: string (nullable = true)\n", + " | | | | | |-- expanded_url: string (nullable = true)\n", + " | | | | | |-- id: long (nullable = true)\n", + " | | | | | |-- id_str: string (nullable = true)\n", + " | | | | | |-- indices: array (nullable = true)\n", + " | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | |-- media_url: string (nullable = true)\n", + " | | | | | |-- media_url_https: string (nullable = true)\n", + " | | | | | |-- sizes: struct (nullable = true)\n", + " | | | | | | |-- large: struct (nullable = true)\n", + " | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | |-- medium: struct (nullable = true)\n", + " | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | |-- small: struct (nullable = true)\n", + " | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | |-- thumb: struct (nullable = true)\n", + " | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | |-- source_status_id: long (nullable = true)\n", + " | | | | | |-- source_status_id_str: string (nullable = true)\n", + " | | | | | |-- source_user_id: long (nullable = true)\n", + " | | | | | |-- source_user_id_str: string (nullable = true)\n", + " | | | | | |-- type: string (nullable = true)\n", + " | | | | | |-- url: string (nullable = true)\n", + " | | | | | |-- video_info: struct (nullable = true)\n", + " | | | | | | |-- aspect_ratio: array (nullable = true)\n", + " | | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | | |-- duration_millis: long (nullable = true)\n", + " | | | | | | |-- variants: array (nullable = true)\n", + " | | | | | | | |-- element: struct (containsNull = true)\n", + " | | | | | | | | |-- bitrate: long (nullable = true)\n", + " | | | | | | | | |-- content_type: string (nullable = true)\n", + " | | | | | | | | |-- url: string (nullable = true)\n", + " | | |-- full_text: string (nullable = true)\n", + " | |-- favorite_count: long (nullable = true)\n", + " | |-- favorited: boolean (nullable = true)\n", + " | |-- filter_level: string (nullable = true)\n", + " | |-- geo: struct (nullable = true)\n", + " | | |-- coordinates: array (nullable = true)\n", + " | | | |-- element: double (containsNull = true)\n", + " | | |-- type: string (nullable = true)\n", + " | |-- id: long (nullable = true)\n", + " | |-- id_str: string (nullable = true)\n", + " | |-- in_reply_to_screen_name: string (nullable = true)\n", + " | |-- in_reply_to_status_id: long (nullable = true)\n", + " | |-- in_reply_to_status_id_str: string (nullable = true)\n", + " | |-- in_reply_to_user_id: long (nullable = true)\n", + " | |-- in_reply_to_user_id_str: string (nullable = true)\n", + " | |-- is_quote_status: boolean (nullable = true)\n", + " | |-- lang: string (nullable = true)\n", + " | |-- place: struct (nullable = true)\n", + " | | |-- bounding_box: struct (nullable = true)\n", + " | | | |-- coordinates: array (nullable = true)\n", + " | | | | |-- element: array (containsNull = true)\n", + " | | | | | |-- element: array (containsNull = true)\n", + " | | | | | | |-- element: double (containsNull = true)\n", + " | | | |-- type: string (nullable = true)\n", + " | | |-- country: string (nullable = true)\n", + " | | |-- country_code: string (nullable = true)\n", + " | | |-- full_name: string (nullable = true)\n", + " | | |-- id: string (nullable = true)\n", + " | | |-- name: string (nullable = true)\n", + " | | |-- place_type: string (nullable = true)\n", + " | | |-- url: string (nullable = true)\n", + " | |-- possibly_sensitive: boolean (nullable = true)\n", + " | |-- quote_count: long (nullable = true)\n", + " | |-- quoted_status: struct (nullable = true)\n", + " | | |-- coordinates: struct (nullable = true)\n", + " | | | |-- coordinates: array (nullable = true)\n", + " | | | | |-- element: double (containsNull = true)\n", + " | | | |-- type: string (nullable = true)\n", + " | | |-- created_at: string (nullable = true)\n", + " | | |-- display_text_range: array (nullable = true)\n", + " | | | |-- element: long (containsNull = true)\n", + " | | |-- entities: struct (nullable = true)\n", + " | | | |-- hashtags: array (nullable = true)\n", + " | | | | |-- element: struct (containsNull = true)\n", + " | | | | | |-- indices: array (nullable = true)\n", + " | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | |-- text: string (nullable = true)\n", + " | | | |-- media: array (nullable = true)\n", + " | | | | |-- element: struct (containsNull = true)\n", + " | | | | | |-- additional_media_info: struct (nullable = true)\n", + " | | | | | | |-- description: string (nullable = true)\n", + " | | | | | | |-- embeddable: boolean (nullable = true)\n", + " | | | | | | |-- monetizable: boolean (nullable = true)\n", + " | | | | | | |-- title: string (nullable = true)\n", + " | | | | | |-- description: string (nullable = true)\n", + " | | | | | |-- display_url: string (nullable = true)\n", + " | | | | | |-- expanded_url: string (nullable = true)\n", + " | | | | | |-- id: long (nullable = true)\n", + " | | | | | |-- id_str: string (nullable = true)\n", + " | | | | | |-- indices: array (nullable = true)\n", + " | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | |-- media_url: string (nullable = true)\n", + " | | | | | |-- media_url_https: string (nullable = true)\n", + " | | | | | |-- sizes: struct (nullable = true)\n", + " | | | | | | |-- large: struct (nullable = true)\n", + " | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | |-- medium: struct (nullable = true)\n", + " | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | |-- small: struct (nullable = true)\n", + " | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | |-- thumb: struct (nullable = true)\n", + " | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | |-- source_status_id: long (nullable = true)\n", + " | | | | | |-- source_status_id_str: string (nullable = true)\n", + " | | | | | |-- source_user_id: long (nullable = true)\n", + " | | | | | |-- source_user_id_str: string (nullable = true)\n", + " | | | | | |-- type: string (nullable = true)\n", + " | | | | | |-- url: string (nullable = true)\n", + " | | | |-- symbols: array (nullable = true)\n", + " | | | | |-- element: struct (containsNull = true)\n", + " | | | | | |-- indices: array (nullable = true)\n", + " | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | |-- text: string (nullable = true)\n", + " | | | |-- urls: array (nullable = true)\n", + " | | | | |-- element: struct (containsNull = true)\n", + " | | | | | |-- display_url: string (nullable = true)\n", + " | | | | | |-- expanded_url: string (nullable = true)\n", + " | | | | | |-- indices: array (nullable = true)\n", + " | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | |-- url: string (nullable = true)\n", + " | | | |-- user_mentions: array (nullable = true)\n", + " | | | | |-- element: struct (containsNull = true)\n", + " | | | | | |-- id: long (nullable = true)\n", + " | | | | | |-- id_str: string (nullable = true)\n", + " | | | | | |-- indices: array (nullable = true)\n", + " | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | |-- name: string (nullable = true)\n", + " | | | | | |-- screen_name: string (nullable = true)\n", + " | | |-- extended_entities: struct (nullable = true)\n", + " | | | |-- media: array (nullable = true)\n", + " | | | | |-- element: struct (containsNull = true)\n", + " | | | | | |-- additional_media_info: struct (nullable = true)\n", + " | | | | | | |-- description: string (nullable = true)\n", + " | | | | | | |-- embeddable: boolean (nullable = true)\n", + " | | | | | | |-- monetizable: boolean (nullable = true)\n", + " | | | | | | |-- title: string (nullable = true)\n", + " | | | | | |-- description: string (nullable = true)\n", + " | | | | | |-- display_url: string (nullable = true)\n", + " | | | | | |-- expanded_url: string (nullable = true)\n", + " | | | | | |-- id: long (nullable = true)\n", + " | | | | | |-- id_str: string (nullable = true)\n", + " | | | | | |-- indices: array (nullable = true)\n", + " | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | |-- media_url: string (nullable = true)\n", + " | | | | | |-- media_url_https: string (nullable = true)\n", + " | | | | | |-- sizes: struct (nullable = true)\n", + " | | | | | | |-- large: struct (nullable = true)\n", + " | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | |-- medium: struct (nullable = true)\n", + " | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | |-- small: struct (nullable = true)\n", + " | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | |-- thumb: struct (nullable = true)\n", + " | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | |-- source_status_id: long (nullable = true)\n", + " | | | | | |-- source_status_id_str: string (nullable = true)\n", + " | | | | | |-- source_user_id: long (nullable = true)\n", + " | | | | | |-- source_user_id_str: string (nullable = true)\n", + " | | | | | |-- type: string (nullable = true)\n", + " | | | | | |-- url: string (nullable = true)\n", + " | | | | | |-- video_info: struct (nullable = true)\n", + " | | | | | | |-- aspect_ratio: array (nullable = true)\n", + " | | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | | |-- duration_millis: long (nullable = true)\n", + " | | | | | | |-- variants: array (nullable = true)\n", + " | | | | | | | |-- element: struct (containsNull = true)\n", + " | | | | | | | | |-- bitrate: long (nullable = true)\n", + " | | | | | | | | |-- content_type: string (nullable = true)\n", + " | | | | | | | | |-- url: string (nullable = true)\n", + " | | |-- extended_tweet: struct (nullable = true)\n", + " | | | |-- display_text_range: array (nullable = true)\n", + " | | | | |-- element: long (containsNull = true)\n", + " | | | |-- entities: struct (nullable = true)\n", + " | | | | |-- hashtags: array (nullable = true)\n", + " | | | | | |-- element: struct (containsNull = true)\n", + " | | | | | | |-- indices: array (nullable = true)\n", + " | | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | | |-- text: string (nullable = true)\n", + " | | | | |-- media: array (nullable = true)\n", + " | | | | | |-- element: struct (containsNull = true)\n", + " | | | | | | |-- additional_media_info: struct (nullable = true)\n", + " | | | | | | | |-- description: string (nullable = true)\n", + " | | | | | | | |-- embeddable: boolean (nullable = true)\n", + " | | | | | | | |-- monetizable: boolean (nullable = true)\n", + " | | | | | | | |-- title: string (nullable = true)\n", + " | | | | | | |-- description: string (nullable = true)\n", + " | | | | | | |-- display_url: string (nullable = true)\n", + " | | | | | | |-- expanded_url: string (nullable = true)\n", + " | | | | | | |-- id: long (nullable = true)\n", + " | | | | | | |-- id_str: string (nullable = true)\n", + " | | | | | | |-- indices: array (nullable = true)\n", + " | | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | | |-- media_url: string (nullable = true)\n", + " | | | | | | |-- media_url_https: string (nullable = true)\n", + " | | | | | | |-- sizes: struct (nullable = true)\n", + " | | | | | | | |-- large: struct (nullable = true)\n", + " | | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | | |-- medium: struct (nullable = true)\n", + " | | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | | |-- small: struct (nullable = true)\n", + " | | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | | |-- thumb: struct (nullable = true)\n", + " | | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | |-- source_status_id: long (nullable = true)\n", + " | | | | | | |-- source_status_id_str: string (nullable = true)\n", + " | | | | | | |-- source_user_id: long (nullable = true)\n", + " | | | | | | |-- source_user_id_str: string (nullable = true)\n", + " | | | | | | |-- type: string (nullable = true)\n", + " | | | | | | |-- url: string (nullable = true)\n", + " | | | | | | |-- video_info: struct (nullable = true)\n", + " | | | | | | | |-- aspect_ratio: array (nullable = true)\n", + " | | | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | | | |-- duration_millis: long (nullable = true)\n", + " | | | | | | | |-- variants: array (nullable = true)\n", + " | | | | | | | | |-- element: struct (containsNull = true)\n", + " | | | | | | | | | |-- bitrate: long (nullable = true)\n", + " | | | | | | | | | |-- content_type: string (nullable = true)\n", + " | | | | | | | | | |-- url: string (nullable = true)\n", + " | | | | |-- symbols: array (nullable = true)\n", + " | | | | | |-- element: struct (containsNull = true)\n", + " | | | | | | |-- indices: array (nullable = true)\n", + " | | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | | |-- text: string (nullable = true)\n", + " | | | | |-- urls: array (nullable = true)\n", + " | | | | | |-- element: struct (containsNull = true)\n", + " | | | | | | |-- display_url: string (nullable = true)\n", + " | | | | | | |-- expanded_url: string (nullable = true)\n", + " | | | | | | |-- indices: array (nullable = true)\n", + " | | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | | |-- url: string (nullable = true)\n", + " | | | | |-- user_mentions: array (nullable = true)\n", + " | | | | | |-- element: struct (containsNull = true)\n", + " | | | | | | |-- id: long (nullable = true)\n", + " | | | | | | |-- id_str: string (nullable = true)\n", + " | | | | | | |-- indices: array (nullable = true)\n", + " | | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | | |-- name: string (nullable = true)\n", + " | | | | | | |-- screen_name: string (nullable = true)\n", + " | | | |-- extended_entities: struct (nullable = true)\n", + " | | | | |-- media: array (nullable = true)\n", + " | | | | | |-- element: struct (containsNull = true)\n", + " | | | | | | |-- additional_media_info: struct (nullable = true)\n", + " | | | | | | | |-- description: string (nullable = true)\n", + " | | | | | | | |-- embeddable: boolean (nullable = true)\n", + " | | | | | | | |-- monetizable: boolean (nullable = true)\n", + " | | | | | | | |-- title: string (nullable = true)\n", + " | | | | | | |-- description: string (nullable = true)\n", + " | | | | | | |-- display_url: string (nullable = true)\n", + " | | | | | | |-- expanded_url: string (nullable = true)\n", + " | | | | | | |-- id: long (nullable = true)\n", + " | | | | | | |-- id_str: string (nullable = true)\n", + " | | | | | | |-- indices: array (nullable = true)\n", + " | | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | | |-- media_url: string (nullable = true)\n", + " | | | | | | |-- media_url_https: string (nullable = true)\n", + " | | | | | | |-- sizes: struct (nullable = true)\n", + " | | | | | | | |-- large: struct (nullable = true)\n", + " | | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | | |-- medium: struct (nullable = true)\n", + " | | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | | |-- small: struct (nullable = true)\n", + " | | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | | |-- thumb: struct (nullable = true)\n", + " | | | | | | | | |-- h: long (nullable = true)\n", + " | | | | | | | | |-- resize: string (nullable = true)\n", + " | | | | | | | | |-- w: long (nullable = true)\n", + " | | | | | | |-- source_status_id: long (nullable = true)\n", + " | | | | | | |-- source_status_id_str: string (nullable = true)\n", + " | | | | | | |-- source_user_id: long (nullable = true)\n", + " | | | | | | |-- source_user_id_str: string (nullable = true)\n", + " | | | | | | |-- type: string (nullable = true)\n", + " | | | | | | |-- url: string (nullable = true)\n", + " | | | | | | |-- video_info: struct (nullable = true)\n", + " | | | | | | | |-- aspect_ratio: array (nullable = true)\n", + " | | | | | | | | |-- element: long (containsNull = true)\n", + " | | | | | | | |-- duration_millis: long (nullable = true)\n", + " | | | | | | | |-- variants: array (nullable = true)\n", + " | | | | | | | | |-- element: struct (containsNull = true)\n", + " | | | | | | | | | |-- bitrate: long (nullable = true)\n", + " | | | | | | | | | |-- content_type: string (nullable = true)\n", + " | | | | | | | | | |-- url: string (nullable = true)\n", + " | | | |-- full_text: string (nullable = true)\n", + " | | |-- favorite_count: long (nullable = true)\n", + " | | |-- favorited: boolean (nullable = true)\n", + " | | |-- filter_level: string (nullable = true)\n", + " | | |-- geo: struct (nullable = true)\n", + " | | | |-- coordinates: array (nullable = true)\n", + " | | | | |-- element: double (containsNull = true)\n", + " | | | |-- type: string (nullable = true)\n", + " | | |-- id: long (nullable = true)\n", + " | | |-- id_str: string (nullable = true)\n", + " | | |-- in_reply_to_screen_name: string (nullable = true)\n", + " | | |-- in_reply_to_status_id: long (nullable = true)\n", + " | | |-- in_reply_to_status_id_str: string (nullable = true)\n", + " | | |-- in_reply_to_user_id: long (nullable = true)\n", + " | | |-- in_reply_to_user_id_str: string (nullable = true)\n", + " | | |-- is_quote_status: boolean (nullable = true)\n", + " | | |-- lang: string (nullable = true)\n", + " | | |-- place: struct (nullable = true)\n", + " | | | |-- bounding_box: struct (nullable = true)\n", + " | | | | |-- coordinates: array (nullable = true)\n", + " | | | | | |-- element: array (containsNull = true)\n", + " | | | | | | |-- element: array (containsNull = true)\n", + " | | | | | | | |-- element: double (containsNull = true)\n", + " | | | | |-- type: string (nullable = true)\n", + " | | | |-- country: string (nullable = true)\n", + " | | | |-- country_code: string (nullable = true)\n", + " | | | |-- full_name: string (nullable = true)\n", + " | | | |-- id: string (nullable = true)\n", + " | | | |-- name: string (nullable = true)\n", + " | | | |-- place_type: string (nullable = true)\n", + " | | | |-- url: string (nullable = true)\n", + " | | |-- possibly_sensitive: boolean (nullable = true)\n", + " | | |-- quote_count: long (nullable = true)\n", + " | | |-- quoted_status_id: long (nullable = true)\n", + " | | |-- quoted_status_id_str: string (nullable = true)\n", + " | | |-- reply_count: long (nullable = true)\n", + " | | |-- retweet_count: long (nullable = true)\n", + " | | |-- retweeted: boolean (nullable = true)\n", + " | | |-- scopes: struct (nullable = true)\n", + " | | | |-- followers: boolean (nullable = true)\n", + " | | |-- source: string (nullable = true)\n", + " | | |-- text: string (nullable = true)\n", + " | | |-- truncated: boolean (nullable = true)\n", + " | | |-- user: struct (nullable = true)\n", + " | | | |-- contributors_enabled: boolean (nullable = true)\n", + " | | | |-- created_at: string (nullable = true)\n", + " | | | |-- default_profile: boolean (nullable = true)\n", + " | | | |-- default_profile_image: boolean (nullable = true)\n", + " | | | |-- description: string (nullable = true)\n", + " | | | |-- favourites_count: long (nullable = true)\n", + " | | | |-- followers_count: long (nullable = true)\n", + " | | | |-- friends_count: long (nullable = true)\n", + " | | | |-- geo_enabled: boolean (nullable = true)\n", + " | | | |-- id: long (nullable = true)\n", + " | | | |-- id_str: string (nullable = true)\n", + " | | | |-- is_translator: boolean (nullable = true)\n", + " | | | |-- listed_count: long (nullable = true)\n", + " | | | |-- location: string (nullable = true)\n", + " | | | |-- name: string (nullable = true)\n", + " | | | |-- profile_background_color: string (nullable = true)\n", + " | | | |-- profile_background_image_url: string (nullable = true)\n", + " | | | |-- profile_background_image_url_https: string (nullable = true)\n", + " | | | |-- profile_background_tile: boolean (nullable = true)\n", + " | | | |-- profile_banner_url: string (nullable = true)\n", + " | | | |-- profile_image_url: string (nullable = true)\n", + " | | | |-- profile_image_url_https: string (nullable = true)\n", + " | | | |-- profile_link_color: string (nullable = true)\n", + " | | | |-- profile_sidebar_border_color: string (nullable = true)\n", + " | | | |-- profile_sidebar_fill_color: string (nullable = true)\n", + " | | | |-- profile_text_color: string (nullable = true)\n", + " | | | |-- profile_use_background_image: boolean (nullable = true)\n", + " | | | |-- protected: boolean (nullable = true)\n", + " | | | |-- screen_name: string (nullable = true)\n", + " | | | |-- statuses_count: long (nullable = true)\n", + " | | | |-- translator_type: string (nullable = true)\n", + " | | | |-- url: string (nullable = true)\n", + " | | | |-- verified: boolean (nullable = true)\n", + " | | | |-- verified_type: string (nullable = true)\n", + " | | | |-- withheld_in_countries: array (nullable = true)\n", + " | | | | |-- element: string (containsNull = true)\n", + " | | |-- withheld_in_countries: array (nullable = true)\n", + " | | | |-- element: string (containsNull = true)\n", + " | |-- quoted_status_id: long (nullable = true)\n", + " | |-- quoted_status_id_str: string (nullable = true)\n", + " | |-- quoted_status_permalink: struct (nullable = true)\n", + " | | |-- display: string (nullable = true)\n", + " | | |-- expanded: string (nullable = true)\n", + " | | |-- url: string (nullable = true)\n", + " | |-- reply_count: long (nullable = true)\n", + " | |-- retweet_count: long (nullable = true)\n", + " | |-- retweeted: boolean (nullable = true)\n", + " | |-- scopes: struct (nullable = true)\n", + " | | |-- followers: boolean (nullable = true)\n", + " | | |-- place_ids: array (nullable = true)\n", + " | | | |-- element: string (containsNull = true)\n", + " | |-- source: string (nullable = true)\n", + " | |-- text: string (nullable = true)\n", + " | |-- truncated: boolean (nullable = true)\n", + " | |-- user: struct (nullable = true)\n", + " | | |-- contributors_enabled: boolean (nullable = true)\n", + " | | |-- created_at: string (nullable = true)\n", + " | | |-- default_profile: boolean (nullable = true)\n", + " | | |-- default_profile_image: boolean (nullable = true)\n", + " | | |-- description: string (nullable = true)\n", + " | | |-- favourites_count: long (nullable = true)\n", + " | | |-- followers_count: long (nullable = true)\n", + " | | |-- friends_count: long (nullable = true)\n", + " | | |-- geo_enabled: boolean (nullable = true)\n", + " | | |-- id: long (nullable = true)\n", + " | | |-- id_str: string (nullable = true)\n", + " | | |-- is_translator: boolean (nullable = true)\n", + " | | |-- listed_count: long (nullable = true)\n", + " | | |-- location: string (nullable = true)\n", + " | | |-- name: string (nullable = true)\n", + " | | |-- profile_background_color: string (nullable = true)\n", + " | | |-- profile_background_image_url: string (nullable = true)\n", + " | | |-- profile_background_image_url_https: string (nullable = true)\n", + " | | |-- profile_background_tile: boolean (nullable = true)\n", + " | | |-- profile_banner_url: string (nullable = true)\n", + " | | |-- profile_image_url: string (nullable = true)\n", + " | | |-- profile_image_url_https: string (nullable = true)\n", + " | | |-- profile_link_color: string (nullable = true)\n", + " | | |-- profile_sidebar_border_color: string (nullable = true)\n", + " | | |-- profile_sidebar_fill_color: string (nullable = true)\n", + " | | |-- profile_text_color: string (nullable = true)\n", + " | | |-- profile_use_background_image: boolean (nullable = true)\n", + " | | |-- protected: boolean (nullable = true)\n", + " | | |-- screen_name: string (nullable = true)\n", + " | | |-- statuses_count: long (nullable = true)\n", + " | | |-- translator_type: string (nullable = true)\n", + " | | |-- url: string (nullable = true)\n", + " | | |-- verified: boolean (nullable = true)\n", + " | | |-- verified_type: string (nullable = true)\n", + " | | |-- withheld_in_countries: array (nullable = true)\n", + " | | | |-- element: string (containsNull = true)\n", + " | |-- withheld_in_countries: array (nullable = true)\n", + " | | |-- element: string (containsNull = true)\n", + " |-- source: string (nullable = true)\n", + " |-- text: string (nullable = true)\n", + " |-- timestamp_ms: string (nullable = true)\n", + " |-- truncated: boolean (nullable = true)\n", + " |-- tweet_text: string (nullable = true)\n", + " |-- user: struct (nullable = true)\n", + " | |-- contributors_enabled: boolean (nullable = true)\n", + " | |-- created_at: string (nullable = true)\n", + " | |-- default_profile: boolean (nullable = true)\n", + " | |-- default_profile_image: boolean (nullable = true)\n", + " | |-- description: string (nullable = true)\n", + " | |-- favourites_count: long (nullable = true)\n", + " | |-- followers_count: long (nullable = true)\n", + " | |-- friends_count: long (nullable = true)\n", + " | |-- geo_enabled: boolean (nullable = true)\n", + " | |-- id: long (nullable = true)\n", + " | |-- id_str: string (nullable = true)\n", + " | |-- is_translator: boolean (nullable = true)\n", + " | |-- listed_count: long (nullable = true)\n", + " | |-- location: string (nullable = true)\n", + " | |-- name: string (nullable = true)\n", + " | |-- profile_background_color: string (nullable = true)\n", + " | |-- profile_background_image_url: string (nullable = true)\n", + " | |-- profile_background_image_url_https: string (nullable = true)\n", + " | |-- profile_background_tile: boolean (nullable = true)\n", + " | |-- profile_banner_url: string (nullable = true)\n", + " | |-- profile_image_url: string (nullable = true)\n", + " | |-- profile_image_url_https: string (nullable = true)\n", + " | |-- profile_link_color: string (nullable = true)\n", + " | |-- profile_sidebar_border_color: string (nullable = true)\n", + " | |-- profile_sidebar_fill_color: string (nullable = true)\n", + " | |-- profile_text_color: string (nullable = true)\n", + " | |-- profile_use_background_image: boolean (nullable = true)\n", + " | |-- protected: boolean (nullable = true)\n", + " | |-- screen_name: string (nullable = true)\n", + " | |-- statuses_count: long (nullable = true)\n", + " | |-- translator_type: string (nullable = true)\n", + " | |-- url: string (nullable = true)\n", + " | |-- verified: boolean (nullable = true)\n", + " | |-- verified_type: string (nullable = true)\n", + " | |-- withheld_in_countries: array (nullable = true)\n", + " | | |-- element: string (containsNull = true)\n", + " |-- withheld_in_countries: array (nullable = true)\n", + " | |-- element: string (containsNull = true)\n", + "\n" + ] + } + ], + "source": [ + "tweets_df.printSchema()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "cfdcf52a-2343-4ee0-b812-3e359ceec570", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/plain": [ + "99994342" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Checking for the total number of records\n", + "total_recs = tweets_df.count()\n", + "total_recs" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "9c333531-a0b3-43db-976c-177ce4b71839", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "39" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Checking how many columns are present to proceed with EDA\n", + "total_features = len(tweets_df.columns)\n", + "total_features" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "44f5e0f9-3ea2-4657-8a91-444286d25ef3", + "metadata": {}, + "outputs": [], + "source": [ + "tweets_df = tweets_df\\\n", + ".withColumn('tweet_text', lower('tweet_text'))\\\n", + ".withColumn('stripped', regexp_replace(col(\"tweet_text\"),\"[\\$#,&%\\\".]\",\"\"))" + ] + }, + { + "cell_type": "markdown", + "id": "047563d7-480c-46c1-b46d-ae39597c26d3", + "metadata": {}, + "source": [ + "# Filtering the text and hashtag columns to get the tweets only related to education (helps in data filtration)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "5c66353a-4de8-4d81-b4c2-4e3705b20a76", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Stage 21:==========> (1191 + 32) / 5741]\r" + ] + } + ], + "source": [ + "tweets_df = tweets_df.filter(tweets_df.lang == 'en')" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "15392e6d-25bd-435a-8d39-20d319f4f708", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Stage 21:===========> (1273 + 32) / 5741]\r" + ] + } + ], + "source": [ + "tdf_tweet_text = tweets_df.filter(col('tweet_text').rlike('.*tuition.*|.*Tuition.*|.*education.*|.*Education.*|.*school.*|.*School.*|.*college.*|.*College.*|.*university.*|.*University.*|.*grade.*|.*Grade.*'))\n", + "tdf_tweet_text.createOrReplaceTempView(\"tw_df_tweet_text\")" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "9c7b9ff9-07d2-4874-a96c-9885cf1d88b4", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Stage 21:===========> (1316 + 32) / 5741]\r" + ] + } + ], + "source": [ + "tdf_hashtag = spark.sql('select * from tw_df_tweet_text where exists(entities.hashtags.text, x -> x rlike \".*education.*|.*Education.*|.*school.*|.*School.*|.*college.*|.*College.*|.*university.*|.*University.*|.*grade.*|.*Grade.*|.*K12.*|.*k12.*|.*study.*|.*Study.*|.*edchat.*|.*Edchat.*|.*learning.*|.*Learning.*|.*edreform.*|.*Edreform.*|.*scichat.*|.*student.*|.*Student.*\")')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8908f0e3-280e-44a6-91ab-4b1fe15da85c", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "tdf_hashtag.write.format(\"parquet\").\\\n", + "mode('overwrite').\\\n", + "save('gs://' + 'msca-bdp-students-bucket/shared_data/kishorkumarreddy' + '/filtered_data_for_analysis_1')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "94064b22-9a02-44b6-b671-402bf6abc0ca", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/plain": [ + "1005167" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tdf_hashtag.count()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Final Presentation.pdf b/Final Presentation.pdf new file mode 100644 index 0000000..b53f5cd Binary files /dev/null and b/Final Presentation.pdf differ diff --git a/Final Presentation.pptx b/Final Presentation.pptx new file mode 100644 index 0000000..7841fb5 Binary files /dev/null and b/Final Presentation.pptx differ diff --git a/Further Analysis and EDA.ipynb b/Further Analysis and EDA.ipynb new file mode 100644 index 0000000..7baf3ef --- /dev/null +++ b/Further Analysis and EDA.ipynb @@ -0,0 +1,1789 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "6e9b9ef6-5221-4ad2-b108-d3551b338fba", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import shutil\n", + "import pandas as pd\n", + "from pyspark.sql.functions import *\n", + "from pyspark.sql.types import *" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "5a8e8445-fde8-44c9-9c29-13002375ba36", + "metadata": {}, + "outputs": [], + "source": [ + "pd.set_option(\"display.max_colwidth\",None)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "1a45c449-85e9-4336-b5c4-6d9dc49c8c99", + "metadata": {}, + "outputs": [], + "source": [ + "from google.cloud import storage" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "b7853cea-7da6-4208-a95f-00a20f9cd0ff", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "3846ee36-c06c-4756-81e9-f0d02d71bfb6", + "metadata": {}, + "outputs": [], + "source": [ + "spark = SparkSession.builder.getOrCreate()\n", + "spark.conf.set(\"spark.sql.repl.eagerEval.enabled\",True) " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "def338ea-a44a-4329-9fc2-2f91e0e21ebd", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "23/03/01 18:43:33 WARN org.apache.spark.sql.catalyst.util.package: Truncated the string representation of a plan since it was too large. This behavior can be adjusted by setting 'spark.sql.debug.maxToStringFields'.\n" + ] + } + ], + "source": [ + "twitter_df=spark.read.parquet('gs://msca-bdp-students-bucket/shared_data/kishorkumarreddy/filtered_data_for_analysis_1')\n", + "c = twitter_df" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "c6b9675c-62dd-4388-89cd-b3282e70b88a", + "metadata": {}, + "outputs": [], + "source": [ + "twitter_df.createOrReplaceTempView(\"twitter_df\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "e1ede0be-8835-47c4-b2ef-286b1de5319c", + "metadata": {}, + "outputs": [], + "source": [ + "query = '''\n", + "select retweeted as is_retweeted,\n", + "retweeted_status.id as rt_original_id,\n", + "retweeted_status.user.screen_name as rt_original_user,\n", + "user.screen_name as handle_name,\n", + "user.verified as is_verified,\n", + "user.followers_count as followers,\n", + "user.statuses_count as total_tweets\n", + "from twitter_df'''\n", + "tw_sq1 = spark.sql(query)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "236b2445-578e-4054-abe5-6c746afd285a", + "metadata": {}, + "outputs": [], + "source": [ + "twitter_df1 = tw_sq1.withColumn(\"tweet_type\",when(col(\"rt_original_id\").isNull() != True,\"retweet\").otherwise(\"tweet\")).filter(col('tweet_type') == 'tweet')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "3b53ec95-f0d7-4d56-954a-2aa2f54cbd23", + "metadata": {}, + "outputs": [], + "source": [ + "twitter_df1.createOrReplaceTempView(\"twitter_df\")" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "bde8fab2-ff44-450c-a8e4-c7573006c201", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "root\n", + " |-- is_retweeted: string (nullable = true)\n", + " |-- rt_original_id: long (nullable = true)\n", + " |-- rt_original_user: string (nullable = true)\n", + " |-- handle_name: string (nullable = true)\n", + " |-- is_verified: boolean (nullable = true)\n", + " |-- followers: long (nullable = true)\n", + " |-- total_tweets: long (nullable = true)\n", + " |-- tweet_type: string (nullable = false)\n", + "\n" + ] + } + ], + "source": [ + "twitter_df1.printSchema()" + ] + }, + { + "cell_type": "markdown", + "id": "f5d37b2a-3cbb-454e-bbad-b2f6f0421b35", + "metadata": {}, + "source": [ + "# Based on Overall Content (Tweets), the Most Prolific Tweeters" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "424d94ea-c90e-47a2-aba2-3309ed5d4452", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
usertotal_content
0soldier_7774327697
1zazoomblog4197074
2PulpNews4187315
3missb623137543
4sectest93080006
5marekingu2897601
6Knewz_Currently2850254
7jornalistavitor2815923
8filafresh2736894
9paul_cude2662698
\n", + "
" + ], + "text/plain": [ + " user total_content\n", + "0 soldier_777 4327697\n", + "1 zazoomblog 4197074\n", + "2 PulpNews 4187315\n", + "3 missb62 3137543\n", + "4 sectest9 3080006\n", + "5 marekingu 2897601\n", + "6 Knewz_Currently 2850254\n", + "7 jornalistavitor 2815923\n", + "8 filafresh 2736894\n", + "9 paul_cude 2662698" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "spark.sql('SELECT handle_name as user, max(total_tweets) as total_content FROM twitter_df GROUP BY user ORDER BY total_content DESC LIMIT 10').toPandas()" + ] + }, + { + "cell_type": "markdown", + "id": "696bc0cd-aeb9-4917-973b-15c4f6c22986", + "metadata": {}, + "source": [ + "# Based on Original Content (Tweets), the Most Prolific Tweets" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "37f25451-ed0e-4c37-bd2c-51c6389ffa36", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
useroriginal_content
0ParentSecurity3128
1AJBlackston1323
2PulpNews1290
3getthatrightgtr1147
4AirLiveRadio1038
5Bgm1177711002
6MarchingTruth2873
7oodlu_tweets858
8itsrohitchouhan857
9DuoInspirations837
\n", + "
" + ], + "text/plain": [ + " user original_content\n", + "0 ParentSecurity 3128\n", + "1 AJBlackston 1323\n", + "2 PulpNews 1290\n", + "3 getthatrightgtr 1147\n", + "4 AirLiveRadio 1038\n", + "5 Bgm117771 1002\n", + "6 MarchingTruth2 873\n", + "7 oodlu_tweets 858\n", + "8 itsrohitchouhan 857\n", + "9 DuoInspirations 837" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "spark.sql('SELECT handle_name as user, count(*) as original_content FROM twitter_df WHERE tweet_type = \"tweet\" GROUP BY user ORDER BY original_content DESC LIMIT 10').toPandas()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "1be8b88e-97c9-4493-ac63-720bcea181ee", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/plain": [ + "1005167" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "twitter_df1 = tw_Q1.withColumn(\"tweet_type\",when(col(\"rt_original_id\").isNull() == True,\"tweet\"))\n", + "twitter_df1.createOrReplaceTempView(\"twitter_df\")\n", + "twitter_df1.count()" + ] + }, + { + "cell_type": "markdown", + "id": "e452329d-2e1f-4f4b-822b-20280cbd5a58", + "metadata": {}, + "source": [ + "Identifying the Most Prolific Authors" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "dd90106f-69b7-44e0-b539-1299d9e8bc53", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
handle_namecount(1)
0ParentSecurity3128
1AJBlackston1323
2PulpNews1290
3getthatrightgtr1147
4AirLiveRadio1038
5Bgm1177711002
6MarchingTruth2873
7oodlu_tweets858
8itsrohitchouhan857
9DuoInspirations837
\n", + "
" + ], + "text/plain": [ + " handle_name count(1)\n", + "0 ParentSecurity 3128\n", + "1 AJBlackston 1323\n", + "2 PulpNews 1290\n", + "3 getthatrightgtr 1147\n", + "4 AirLiveRadio 1038\n", + "5 Bgm117771 1002\n", + "6 MarchingTruth2 873\n", + "7 oodlu_tweets 858\n", + "8 itsrohitchouhan 857\n", + "9 DuoInspirations 837" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "query = '''select handle_name, \n", + "count(*) \n", + "from twitter_df \n", + "where tweet_type = \"tweet\" \n", + "group by handle_name \n", + "order by count(*) \n", + "desc limit 10'''\n", + "spark.sql(query).toPandas()" + ] + }, + { + "cell_type": "markdown", + "id": "fc923be4-f50e-402c-8e90-49999588f709", + "metadata": {}, + "source": [ + "# Based on Retweets Count (Most Prolific Retweets)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "8a5b097d-4888-472c-9863-ea5e3f30d0d4", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
rt_original_usercount(1)
0Golshifteh7451
1GretaThunberg4504
2PahlaviReza3786
3Hornystepsis13638
4robbeorn3277
.........
80269baddiejenny921
80270rouse_dr1
80271CabellsMedicine1
80272mattitakubel1
80273NACCE1
\n", + "

80274 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " rt_original_user count(1)\n", + "0 Golshifteh 7451\n", + "1 GretaThunberg 4504\n", + "2 PahlaviReza 3786\n", + "3 Hornystepsis1 3638\n", + "4 robbeorn 3277\n", + "... ... ...\n", + "80269 baddiejenny92 1\n", + "80270 rouse_dr 1\n", + "80271 CabellsMedicine 1\n", + "80272 mattitakubel 1\n", + "80273 NACCE 1\n", + "\n", + "[80274 rows x 2 columns]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "spark.sql('select rt_original_user, count(*) from twitter_df where rt_original_user IS NOT NULL group by rt_original_user order by count(*) desc').toPandas()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "ff22c84c-9a2a-4954-96af-57ce99f65b34", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
summarycreated_atfavorite_countfilter_levelidid_strin_reply_to_screen_namein_reply_to_status_idin_reply_to_status_id_strin_reply_to_user_idin_reply_to_user_id_strlangquote_countquoted_status_idquoted_status_id_strquoted_textreply_countretweet_countretweetedretweeted_fromsourcetexttimestamp_mstweet_textstripped
count1005167100516710051671005167100516733709272322723233709337091005167100516772963729637294610051671005167100516770393510051671005167100516710051671005167
meannull0.0null1.566841370743179...1.566841370743179...433.01.563454478121966...1.563454478121966...5.277987172089125...5.277987172089125...null0.01.559602036301624...1.559602036301624...420.00.00.0null15417.625925925926nullnull1.662399067946775...nullnull
stddevnull0.0null3.115244689557993...3.115244689557993...null4.269803723556284...4.269803723556284...6.307440523906169...6.307440523906169...null0.05.343131196135945...5.343131196135945...null0.00.0null543175.3414855197nullnull7.427322124370399E9nullnull
minFri Apr 08 00:00:...0low1511197436458459137151119743645845913700Fuzz1559129819101811919242649190426511000060610518896640en01246236590411612171003686491070128129!!! Parents Alert...00\n", + "\n", + "https<a href="HTTP://b...! #students #scho...1649132520199! #students #scho...\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "after a lon...
maxWed Sep 28 23:59:...0low16233075083906949131623307508390694913zzzzzryu16232881836760965129932417723179130881622359362378375171999988014032945152en01623294581193203714999010989751259136🫶~The ❤️ back to...00RT… https<a href="https://...🫶🏽 Give back to...1675861644252🫶🏽 give back to...🫶🏽 give back to...
\n" + ], + "text/plain": [ + "+-------+--------------------+--------------+------------+--------------------+--------------------+-----------------------+---------------------+-------------------------+--------------------+-----------------------+-------+-----------+--------------------+--------------------+--------------------+-----------+-------------+---------+------------------+--------------------+--------------------+--------------------+--------------------+--------------------+\n", + "|summary| created_at|favorite_count|filter_level| id| id_str|in_reply_to_screen_name|in_reply_to_status_id|in_reply_to_status_id_str| in_reply_to_user_id|in_reply_to_user_id_str| lang|quote_count| quoted_status_id|quoted_status_id_str| quoted_text|reply_count|retweet_count|retweeted| retweeted_from| source| text| timestamp_ms| tweet_text| stripped|\n", + "+-------+--------------------+--------------+------------+--------------------+--------------------+-----------------------+---------------------+-------------------------+--------------------+-----------------------+-------+-----------+--------------------+--------------------+--------------------+-----------+-------------+---------+------------------+--------------------+--------------------+--------------------+--------------------+--------------------+\n", + "| count| 1005167| 1005167| 1005167| 1005167| 1005167| 33709| 27232| 27232| 33709| 33709|1005167| 1005167| 72963| 72963| 72946| 1005167| 1005167| 1005167| 703935| 1005167| 1005167| 1005167| 1005167| 1005167|\n", + "| mean| null| 0.0| null|1.566841370743179...|1.566841370743179...| 433.0| 1.563454478121966...| 1.563454478121966...|5.277987172089125...| 5.277987172089125...| null| 0.0|1.559602036301624...|1.559602036301624...| 420.0| 0.0| 0.0| null|15417.625925925926| null| null|1.662399067946775...| null| null|\n", + "| stddev| null| 0.0| null|3.115244689557993...|3.115244689557993...| null| 4.269803723556284...| 4.269803723556284...|6.307440523906169...| 6.307440523906169...| null| 0.0|5.343131196135945...|5.343131196135945...| null| 0.0| 0.0| null| 543175.3414855197| null| null| 7.427322124370399E9| null| null|\n", + "| min|Fri Apr 08 00:00:...| 0| low| 1511197436458459137| 1511197436458459137| 00Fuzz| 1559129819| 1018119192426491904| 2651| 1000060610518896640| en| 0| 124623659041161217| 1003686491070128129|!!! Parents Alert...| 0| 0| | \n", + "\n", + "https|\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
direct_retweet_countquoted_status.retweet_countretweeted_status.quoted_status.retweet_countretweeted_status.retweet_countretweeted_status.reply_countreply_count
count10000.0535.000000329.0000007935.0000007935.00000010000.0
mean0.01073.067290907.4680851370.853938232.8171390.0
std0.02663.1008752459.5892492528.899777425.7647150.0
min0.00.0000000.0000001.0000000.0000000.0
25%0.010.00000021.00000019.0000000.0000000.0
50%0.0106.000000109.000000184.00000013.0000000.0
75%0.0969.500000969.0000001390.500000232.0000000.0
max0.022407.00000020944.00000014588.0000002293.0000000.0
\n", + "" + ], + "text/plain": [ + " direct_retweet_count quoted_status.retweet_count \\\n", + "count 10000.0 535.000000 \n", + "mean 0.0 1073.067290 \n", + "std 0.0 2663.100875 \n", + "min 0.0 0.000000 \n", + "25% 0.0 10.000000 \n", + "50% 0.0 106.000000 \n", + "75% 0.0 969.500000 \n", + "max 0.0 22407.000000 \n", + "\n", + " retweeted_status.quoted_status.retweet_count \\\n", + "count 329.000000 \n", + "mean 907.468085 \n", + "std 2459.589249 \n", + "min 0.000000 \n", + "25% 21.000000 \n", + "50% 109.000000 \n", + "75% 969.000000 \n", + "max 20944.000000 \n", + "\n", + " retweeted_status.retweet_count retweeted_status.reply_count \\\n", + "count 7935.000000 7935.000000 \n", + "mean 1370.853938 232.817139 \n", + "std 2528.899777 425.764715 \n", + "min 1.000000 0.000000 \n", + "25% 19.000000 0.000000 \n", + "50% 184.000000 13.000000 \n", + "75% 1390.500000 232.000000 \n", + "max 14588.000000 2293.000000 \n", + "\n", + " reply_count \n", + "count 10000.0 \n", + "mean 0.0 \n", + "std 0.0 \n", + "min 0.0 \n", + "25% 0.0 \n", + "50% 0.0 \n", + "75% 0.0 \n", + "max 0.0 " + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_retweetCounts.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "d07e197e-6d4c-48d2-b655-4fa7536729ad", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/plain": [ + "652559" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_original_tweets = twitter_df.filter(\"retweeted_status.retweet_count is not null\") \n", + "df_original_tweets.count()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "4b53cb71-e36f-4421-a5f9-144be89ceece", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Stage 31:=====================================================>(209 + 1) / 210]\r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Count of all tweets: 1005167\n", + "Count of all original tweets: 352608\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "count1 = twitter_df.count()\n", + "count2 = twitter_df.filter('retweeted_status is null').count()\n", + "print('Count of all tweets:', count1)\n", + "print('Count of all original tweets:', count2)" + ] + }, + { + "cell_type": "markdown", + "id": "71a20d95-57e6-458a-8a57-0e4d08a42372", + "metadata": {}, + "source": [ + "## Identifying the Most Prolific (or) Influential Twitterers Using the Count of Tweets" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "97c4514c-7d8f-484b-a124-4d6ecabecbd4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['coordinates', 'created_at', 'display_text_range', 'entities', 'extended_entities', 'extended_tweet', 'favorite_count', 'favorited', 'filter_level', 'geo', 'id', 'id_str', 'in_reply_to_screen_name', 'in_reply_to_status_id', 'in_reply_to_status_id_str', 'in_reply_to_user_id', 'in_reply_to_user_id_str', 'is_quote_status', 'lang', 'place', 'possibly_sensitive', 'quote_count', 'quoted_status', 'quoted_status_id', 'quoted_status_id_str', 'quoted_status_permalink', 'quoted_text', 'reply_count', 'retweet_count', 'retweeted', 'retweeted_from', 'retweeted_status', 'source', 'text', 'timestamp_ms', 'truncated', 'tweet_text', 'user', 'withheld_in_countries', 'stripped']\n" + ] + } + ], + "source": [ + "print(twitter_df.columns)" + ] + }, + { + "cell_type": "markdown", + "id": "9b11d610-a136-4017-88b1-16403efa4d02", + "metadata": {}, + "source": [ + "### Extracting Important Columns and fields from the filtered dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "72d064a5-e6db-4b2c-a50e-9b0532355567", + "metadata": {}, + "outputs": [], + "source": [ + "#tw_df.printSchema()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "ec0fc236-7872-42d8-bf97-bdef221d3858", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "df_coords = twitter_df.select([\n", + " twitter_df.coordinates.alias(\"direct_coordinates\"),\n", + " twitter_df.geo.coordinates.alias(\"geo.coordinates\"),\n", + " twitter_df.place.bounding_box.coordinates.alias(\"place.bounding_box.coordinates\"),\n", + " twitter_df.place.country_code.alias(\"place.country_code\"),\n", + " twitter_df.place.country.alias(\"place.country\"),\n", + " twitter_df.place['name'].alias(\"place.name\"),\n", + " twitter_df.place.full_name.alias(\"place.full_name\"),\n", + " twitter_df.user.location.alias(\"user.location\"),\n", + " twitter_df.tweet_text,\n", + " twitter_df.user.withheld_in_countries\n", + "]).limit(30000).toPandas()" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "ed09ee8c-0cbf-4d2b-8ed6-ff8f320bd9d5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
direct_coordinatesgeo.coordinatesplace.bounding_box.coordinatesplace.country_codeplace.countryplace.nameplace.full_nameuser.locationtweet_textuser.withheld_in_countries
count7272193193193193193125233000030000
unique606016115171621625560140651
top([-71.4128343, 41.8239891], Point)[41.8239891, -71.4128343][[[-71.474186, 41.772455], [-71.474186, 41.861713], [-71.369479, 41.861713], [-71.369479, 41.772455]]]USUnited StatesProvidenceProvidence, RIUnited Stateslet go of students in #sharif_university #mahsaamini https://t.co/jjnszzjjf5[]
freq55512412355225256330000
\n", + "
" + ], + "text/plain": [ + " direct_coordinates geo.coordinates \\\n", + "count 72 72 \n", + "unique 60 60 \n", + "top ([-71.4128343, 41.8239891], Point) [41.8239891, -71.4128343] \n", + "freq 5 5 \n", + "\n", + " place.bounding_box.coordinates \\\n", + "count 193 \n", + "unique 161 \n", + "top [[[-71.474186, 41.772455], [-71.474186, 41.861713], [-71.369479, 41.861713], [-71.369479, 41.772455]]] \n", + "freq 5 \n", + "\n", + " place.country_code place.country place.name place.full_name \\\n", + "count 193 193 193 193 \n", + "unique 15 17 162 162 \n", + "top US United States Providence Providence, RI \n", + "freq 124 123 5 5 \n", + "\n", + " user.location \\\n", + "count 12523 \n", + "unique 5560 \n", + "top United States \n", + "freq 225 \n", + "\n", + " tweet_text \\\n", + "count 30000 \n", + "unique 14065 \n", + "top let go of students in #sharif_university #mahsaamini https://t.co/jjnszzjjf5 \n", + "freq 2563 \n", + "\n", + " user.withheld_in_countries \n", + "count 30000 \n", + "unique 1 \n", + "top [] \n", + "freq 30000 " + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_coords.describe()" + ] + }, + { + "cell_type": "markdown", + "id": "555bf457-9266-4964-8d3e-377a51ef0009", + "metadata": {}, + "source": [ + "### Taking the non-null values from the field user.withheld_in_countries to avoid bad plotting" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "122e99f7-7266-4330-98ed-df7631573478", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/plain": [ + "1005167" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "twitter_df.filter(\"user.withheld_in_countries is not NULL\").count()" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "3b64b764-a104-4015-a31c-6b462d92fa87", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/plain": [ + "Index(['coordinates', 'created_at', 'display_text_range', 'entities',\n", + " 'extended_entities', 'extended_tweet', 'favorite_count', 'favorited',\n", + " 'filter_level', 'geo', 'id', 'id_str', 'in_reply_to_screen_name',\n", + " 'in_reply_to_status_id', 'in_reply_to_status_id_str',\n", + " 'in_reply_to_user_id', 'in_reply_to_user_id_str', 'is_quote_status',\n", + " 'lang', 'place', 'possibly_sensitive', 'quote_count', 'quoted_status',\n", + " 'quoted_status_id', 'quoted_status_id_str', 'quoted_status_permalink',\n", + " 'quoted_text', 'reply_count', 'retweet_count', 'retweeted',\n", + " 'retweeted_from', 'retweeted_status', 'source', 'text', 'timestamp_ms',\n", + " 'truncated', 'tweet_text', 'user', 'withheld_in_countries', 'stripped'],\n", + " dtype='object')" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "twitter_df.limit(5).toPandas().columns" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "9ba01280-864e-4252-a8aa-ecc5c35758ea", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "23/03/01 18:57:54 ERROR org.apache.spark.network.client.TransportResponseHandler: Still have 2 requests outstanding when connection from /10.128.0.68:40754 is closed\n", + "23/03/01 18:57:54 WARN org.apache.spark.storage.BlockManagerMasterEndpoint: Error trying to remove broadcast 36 from block manager BlockManagerId(32, hub-msca-bdp-dphub-students-kishorkumarreddy-sw-qdhr.c.msca-bdp-students.internal, 40227, None)\n", + "java.io.IOException: Connection from /10.128.0.68:40754 closed\n", + "\tat org.apache.spark.network.client.TransportResponseHandler.channelInactive(TransportResponseHandler.java:146)\n", + "\tat org.apache.spark.network.server.TransportChannelHandler.channelInactive(TransportChannelHandler.java:117)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:262)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:248)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:241)\n", + "\tat io.netty.channel.ChannelInboundHandlerAdapter.channelInactive(ChannelInboundHandlerAdapter.java:81)\n", + "\tat io.netty.handler.timeout.IdleStateHandler.channelInactive(IdleStateHandler.java:277)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:262)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:248)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:241)\n", + "\tat io.netty.channel.ChannelInboundHandlerAdapter.channelInactive(ChannelInboundHandlerAdapter.java:81)\n", + "\tat org.apache.spark.network.util.TransportFrameDecoder.channelInactive(TransportFrameDecoder.java:225)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:262)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:248)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:241)\n", + "\tat io.netty.channel.DefaultChannelPipeline$HeadContext.channelInactive(DefaultChannelPipeline.java:1405)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:262)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:248)\n", + "\tat io.netty.channel.DefaultChannelPipeline.fireChannelInactive(DefaultChannelPipeline.java:901)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe$8.run(AbstractChannel.java:818)\n", + "\tat io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)\n", + "\tat io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:497)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)\n", + "\tat io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n", + "\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n", + "\tat java.lang.Thread.run(Thread.java:750)\n", + "23/03/01 18:57:54 WARN org.apache.spark.storage.BlockManagerMasterEndpoint: Error trying to remove shuffle 10 from block manager BlockManagerId(32, hub-msca-bdp-dphub-students-kishorkumarreddy-sw-qdhr.c.msca-bdp-students.internal, 40227, None)\n", + "java.io.IOException: Connection from /10.128.0.68:40754 closed\n", + "\tat org.apache.spark.network.client.TransportResponseHandler.channelInactive(TransportResponseHandler.java:146)\n", + "\tat org.apache.spark.network.server.TransportChannelHandler.channelInactive(TransportChannelHandler.java:117)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:262)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:248)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:241)\n", + "\tat io.netty.channel.ChannelInboundHandlerAdapter.channelInactive(ChannelInboundHandlerAdapter.java:81)\n", + "\tat io.netty.handler.timeout.IdleStateHandler.channelInactive(IdleStateHandler.java:277)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:262)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:248)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:241)\n", + "\tat io.netty.channel.ChannelInboundHandlerAdapter.channelInactive(ChannelInboundHandlerAdapter.java:81)\n", + "\tat org.apache.spark.network.util.TransportFrameDecoder.channelInactive(TransportFrameDecoder.java:225)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:262)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:248)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:241)\n", + "\tat io.netty.channel.DefaultChannelPipeline$HeadContext.channelInactive(DefaultChannelPipeline.java:1405)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:262)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:248)\n", + "\tat io.netty.channel.DefaultChannelPipeline.fireChannelInactive(DefaultChannelPipeline.java:901)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe$8.run(AbstractChannel.java:818)\n", + "\tat io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)\n", + "\tat io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:497)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)\n", + "\tat io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n", + "\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n", + "\tat java.lang.Thread.run(Thread.java:750)\n", + "23/03/01 18:57:54 WARN org.apache.spark.storage.BlockManagerMasterEndpoint: No more replicas available for broadcast_36_piece0 !\n", + "23/03/01 18:57:54 ERROR org.apache.spark.network.client.TransportResponseHandler: Still have 1 requests outstanding when connection from /10.128.0.68:40736 is closed\n", + "23/03/01 18:57:54 WARN org.apache.spark.storage.BlockManagerMasterEndpoint: Error trying to remove broadcast 36 from block manager BlockManagerId(30, hub-msca-bdp-dphub-students-kishorkumarreddy-sw-qdhr.c.msca-bdp-students.internal, 38187, None)\n", + "java.io.IOException: Connection from /10.128.0.68:40736 closed\n", + "\tat org.apache.spark.network.client.TransportResponseHandler.channelInactive(TransportResponseHandler.java:146)\n", + "\tat org.apache.spark.network.server.TransportChannelHandler.channelInactive(TransportChannelHandler.java:117)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:262)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:248)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:241)\n", + "\tat io.netty.channel.ChannelInboundHandlerAdapter.channelInactive(ChannelInboundHandlerAdapter.java:81)\n", + "\tat io.netty.handler.timeout.IdleStateHandler.channelInactive(IdleStateHandler.java:277)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:262)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:248)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:241)\n", + "\tat io.netty.channel.ChannelInboundHandlerAdapter.channelInactive(ChannelInboundHandlerAdapter.java:81)\n", + "\tat org.apache.spark.network.util.TransportFrameDecoder.channelInactive(TransportFrameDecoder.java:225)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:262)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:248)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:241)\n", + "\tat io.netty.channel.DefaultChannelPipeline$HeadContext.channelInactive(DefaultChannelPipeline.java:1405)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:262)\n", + "\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:248)\n", + "\tat io.netty.channel.DefaultChannelPipeline.fireChannelInactive(DefaultChannelPipeline.java:901)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe$8.run(AbstractChannel.java:818)\n", + "\tat io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)\n", + "\tat io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:497)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)\n", + "\tat io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n", + "\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n", + "\tat java.lang.Thread.run(Thread.java:750)\n", + " \r" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
created_atidgeo_coordinatesuser_namefollowers_countverified_useruser_locationuser_descriptionreply_countretweet_countretweeted_statustweet_texttext
0Sat Oct 29 18:36:18 +0000 20221586426715760459778NoneTitanUp Ty2256FalseNone#LGM #TITANS #GBO🍊 #FJB #NJ #USA 🇺🇸551(None, Sat Oct 29 13:22:46 +0000 2022, [0, 82], ([Row(indices=[49, 53], text='SEC'), Row(indices=[54, 70], text='CollegeFootball'), Row(indices=[71, 75], text='cfb'), Row(indices=[76, 82], text='NCAAF')], [Row(additional_media_info=None, description=None, display_url='pic.twitter.com/ra3EkYetqu', expanded_url='https://twitter.com/JWPSports/status/1586347814967132163/photo/1', id=1586347810932154368, id_str='1586347810932154368', indices=[83, 106], media_url='http://pbs.twimg.com/media/FgPW7eDUYAAPV17.jpg', media_url_https='https://pbs.twimg.com/media/FgPW7eDUYAAPV17.jpg', sizes=Row(large=Row(h=1159, resize='fit', w=1172), medium=Row(h=1159, resize='fit', w=1172), small=Row(h=672, resize='fit', w=680), thumb=Row(h=150, resize='crop', w=150)), source_status_id=None, source_status_id_str=None, source_user_id=None, source_user_id_str=None, type='photo', url='https://t.co/ra3EkYetqu')], [], [], []), ([Row(additional_media_info=None, description=None, display_url='pic.twitter.com/ra3EkYetqu', expanded_url='https://twitter.com/JWPSports/status/1586347814967132163/photo/1', id=1586347810932154368, id_str='1586347810932154368', indices=[83, 106], media_url='http://pbs.twimg.com/media/FgPW7eDUYAAPV17.jpg', media_url_https='https://pbs.twimg.com/media/FgPW7eDUYAAPV17.jpg', sizes=Row(large=Row(h=1159, resize='fit', w=1172), medium=Row(h=1159, resize='fit', w=1172), small=Row(h=672, resize='fit', w=680), thumb=Row(h=150, resize='crop', w=150)), source_status_id=None, source_status_id_str=None, source_user_id=None, source_user_id_str=None, type='photo', url='https://t.co/ra3EkYetqu', video_info=None)],), None, 402, False, low, None, 1586347814967132163, 1586347814967132163, None, None, None, None, None, False, en, None, False, 3, None, None, None, None, 5, 51, False, None, <a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>, Your current SEC College Football QBR leaders.👀\\n\\n#SEC #CollegeFootball #cfb #NCAAF https://t.co/ra3EkYetqu, False, (False, Fri Jan 31 15:24:06 +0000 2020, True, False, JWP Sports! Be sure to find me on Instagram @jwp_sports | @cfbalerts only on Instagram. Connect with me on all platforms ⬇️, 1935, 4414, 1857, True, 1223265683565416448, 1223265683565416448, False, 6, None, JWP Sports , F5F8FA, , , False, None, http://pbs.twimg.com/profile_images/1225762639957106688/k75frUmv_normal.jpg, https://pbs.twimg.com/profile_images/1225762639957106688/k75frUmv_normal.jpg, 1DA1F2, C0DEED, DDEEF6, 333333, True, False, JWPSports, 1623, none, https://linktr.ee/jwpsports, False, None, []), None)your current sec college football qbr leaders.👀\\n\\n#sec #collegefootball #cfb #ncaaf https://t.co/ra3ekyetquRT @JWPSports: Your current SEC College Football QBR leaders.👀\\n\\n#SEC #CollegeFootball #cfb #NCAAF https://t.co/ra3EkYetqu
1Sat Oct 29 18:36:18 +0000 20221586426719090589696NoneSickYooo88FalseNone..3168(None, Sun Feb 13 19:58:23 +0000 2022, [0, 140], ([Row(indices=[52, 66], text='collegebaddie'), Row(indices=[67, 75], text='college'), Row(indices=[76, 87], text='latinahead'), Row(indices=[88, 102], text='latinaexposed')], None, [], [Row(display_url='twitter.com/i/web/status/1…', expanded_url='https://twitter.com/i/web/status/1492951306398355456', indices=[104, 127], url='https://t.co/tLxG8VA9ih')], []), None, ([0, 155], ([Row(indices=[52, 66], text='collegebaddie'), Row(indices=[67, 75], text='college'), Row(indices=[76, 87], text='latinahead'), Row(indices=[88, 102], text='latinaexposed'), Row(indices=[103, 116], text='LatinaBeauty'), Row(indices=[117, 130], text='sloppythroat'), Row(indices=[131, 147], text='sloppyheadGIVER'), Row(indices=[148, 155], text='blowie')], [Row(additional_media_info=Row(description=None, embeddable=None, monetizable=False, title=None), description=None, display_url='pic.twitter.com/GhG6abUn99', expanded_url='https://twitter.com/pxrnstachee/status/1492951306398355456/video/1', id=1492951256318431232, id_str='1492951256318431232', indices=[156, 179], media_url='http://pbs.twimg.com/ext_tw_video_thumb/1492951256318431232/pu/img/PeBtNX6QBgdDQZHX.jpg', media_url_https='https://pbs.twimg.com/ext_tw_video_thumb/1492951256318431232/pu/img/PeBtNX6QBgdDQZHX.jpg', sizes=Row(large=Row(h=1280, resize='fit', w=732), medium=Row(h=1200, resize='fit', w=686), small=Row(h=680, resize='fit', w=389), thumb=Row(h=150, resize='crop', w=150)), source_status_id=None, source_status_id_str=None, source_user_id=None, source_user_id_str=None, type='video', url='https://t.co/GhG6abUn99', video_info=Row(aspect_ratio=[183, 320], duration_millis=45001, variants=[Row(bitrate=632000, content_type='video/mp4', url='https://video.twimg.com/ext_tw_video/1492951256318431232/pu/vid/320x558/hDDxsZ1Kgt_l7sg3.mp4?tag=12'), Row(bitrate=None, content_type='application/x-mpegURL', url='https://video.twimg.com/ext_tw_video/1492951256318431232/pu/pl/np_2fWZzuV1YYGWs.m3u8?tag=12&container=fmp4'), Row(bitrate=2176000, content_type='video/mp4', url='https://video.twimg.com/ext_tw_video/1492951256318431232/pu/vid/720x1258/OSWvqvJs35tJrRRC.mp4?tag=12'), Row(bitrate=950000, content_type='video/mp4', url='https://video.twimg.com/ext_tw_video/1492951256318431232/pu/vid/480x838/ZqGt4Qzk4jREnItM.mp4?tag=12')]))], [], [], []), ([Row(additional_media_info=Row(description=None, embeddable=None, monetizable=False, title=None), description=None, display_url='pic.twitter.com/GhG6abUn99', expanded_url='https://twitter.com/pxrnstachee/status/1492951306398355456/video/1', id=1492951256318431232, id_str='1492951256318431232', indices=[156, 179], media_url='http://pbs.twimg.com/ext_tw_video_thumb/1492951256318431232/pu/img/PeBtNX6QBgdDQZHX.jpg', media_url_https='https://pbs.twimg.com/ext_tw_video_thumb/1492951256318431232/pu/img/PeBtNX6QBgdDQZHX.jpg', sizes=Row(large=Row(h=1280, resize='fit', w=732), medium=Row(h=1200, resize='fit', w=686), small=Row(h=680, resize='fit', w=389), thumb=Row(h=150, resize='crop', w=150)), source_status_id=None, source_status_id_str=None, source_user_id=None, source_user_id_str=None, type='video', url='https://t.co/GhG6abUn99', video_info=Row(aspect_ratio=[183, 320], duration_millis=45001, variants=[Row(bitrate=632000, content_type='video/mp4', url='https://video.twimg.com/ext_tw_video/1492951256318431232/pu/vid/320x558/hDDxsZ1Kgt_l7sg3.mp4?tag=12'), Row(bitrate=None, content_type='application/x-mpegURL', url='https://video.twimg.com/ext_tw_video/1492951256318431232/pu/pl/np_2fWZzuV1YYGWs.m3u8?tag=12&container=fmp4'), Row(bitrate=2176000, content_type='video/mp4', url='https://video.twimg.com/ext_tw_video/1492951256318431232/pu/vid/720x1258/OSWvqvJs35tJrRRC.mp4?tag=12'), Row(bitrate=950000, content_type='video/mp4', url='https://video.twimg.com/ext_tw_video/1492951256318431232/pu/vid/480x838/ZqGt4Qzk4jREnItM.mp4?tag=12')]))],), Latina baddie wanted to suck me off during a party😫 #collegebaddie #college #latinahead #latinaexposed #LatinaBeauty #sloppythroat #sloppyheadGIVER #blowie https://t.co/GhG6abUn99), 1275, False, low, None, 1492951306398355456, 1492951306398355456, None, None, None, None, None, False, en, None, True, 0, None, None, None, None, 3, 168, False, None, <a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>, Latina baddie wanted to suck me off during a party😫 #collegebaddie #college #latinahead #latinaexposed… https://t.co/tLxG8VA9ih, True, (False, Thu May 10 01:13:52 +0000 2018, True, False, | 18+ Daily Content | 🌹No Content Is Owned By The Maker Of This Account🌹| Dm for credit/removal no copyright infringement intended, 8017, 64513, 45, False, 994384995740352512, 994384995740352512, False, 216, None, ParadisePxrn (dm for cheap promo), F5F8FA, , , False, https://pbs.twimg.com/profile_banners/994384995740352512/1666345959, http://pbs.twimg.com/profile_images/1583363185045667840/IYjjH-zG_normal.jpg, https://pbs.twimg.com/profile_images/1583363185045667840/IYjjH-zG_normal.jpg, 1DA1F2, C0DEED, DDEEF6, 333333, True, False, pxrnstachee, 565, none, https://discord.gg/sullen, False, None, []), None)latina baddie wanted to suck me off during a party😫 #collegebaddie #college #latinahead #latinaexposed #latinabeauty #sloppythroat #sloppyheadgiver #blowie https://t.co/ghg6abun99RT @pxrnstachee: Latina baddie wanted to suck me off during a party😫 #collegebaddie #college #latinahead #latinaexposed #LatinaBeauty #slop…
2Sat Oct 29 18:36:55 +0000 20221586426871524343814NoneSaturn883FalseAmerica#براندازم #نه_به_جمهوری_اسلامی07(None, Sat Oct 29 18:23:54 +0000 2022, None, ([Row(indices=[37, 56], text='UniversityofTehran')], None, [], [Row(display_url='twitter.com/i/web/status/1…', expanded_url='https://twitter.com/i/web/status/1586423598645841922', indices=[117, 140], url='https://t.co/J61gZ0Gy9z')], []), None, ([0, 279], ([Row(indices=[37, 56], text='UniversityofTehran'), Row(indices=[267, 279], text='Mahsa_Amini')], None, [], [], []), None, Today’s peaceful student protests of #UniversityofTehran, College of Engineering was attacked by basij and plainclothes security forces (who had illegally entered the campus). Security forces waiting outside arresting and taking students away to undisclosed location #Mahsa_Amini), 11, False, low, None, 1586423598645841922, 1586423598645841922, None, None, None, None, None, True, en, None, None, 0, (None, Sat Oct 29 18:00:59 +0000 2022, None, ([Row(indices=[11, 23], text='دانشکده_فنی')], None, [], [Row(display_url='twitter.com/i/web/status/1…', expanded_url='https://twitter.com/i/web/status/1586417830228267009', indices=[117, 140], url='https://t.co/Fw2dvhchXt')], []), None, ([0, 279], Row(hashtags=[Row(indices=[11, 23], text='دانشکده_فنی'), Row(indices=[268, 279], text='مهسا_امینی')], media=None, symbols=[], urls=[], user_mentions=[]), None, ۱/امروز در #دانشکده_فنی دانشگاه تهران، دانشجویان با تجمع مسالمت‌آمیز، شعار دادند و خواسته‌های خود را مطرح کردند اما مورد حمله نیروهای بسیج دانشجویی قرار گرفتند. نیروهای لباس شخصی به طور غیرقانونی از صبح در دانشگاه مستقر شده بودند و با بسیجی‌ها در این حمله همراه شدند.\\n#مهسا_امینی), 63, False, low, None, 1586417830228267009, 1586417830228267009, None, None, None, None, None, False, fa, None, None, 1, None, None, 1, 25, False, None, <a href=\"https://mobile.twitter.com\" rel=\"nofollow\">Twitter Web App</a>, ۱/امروز در #دانشکده_فنی دانشگاه تهران، دانشجویان با تجمع مسالمت‌آمیز، شعار دادند و خواسته‌های خود را مطرح کردند اما… https://t.co/Fw2dvhchXt, True, (False, Tue Aug 11 07:17:35 +0000 2015, False, False, Official account of Iran Human Rights (IHR NGO)- Also visit @iranhr حساب رسمی توییتر سازمان حقوق بشر ایران, 1067, 9849, 284, True, 3414505683, 3414505683, False, 120, Oslo, Norway, Iran Human Rights (IHR NGO), 000000, http://abs.twimg.com/images/themes/theme1/bg.png, https://abs.twimg.com/images/themes/theme1/bg.png, False, https://pbs.twimg.com/profile_banners/3414505683/1665403153, http://pbs.twimg.com/profile_images/631002652361424896/NWkvQXd-_normal.png, https://pbs.twimg.com/profile_images/631002652361424896/NWkvQXd-_normal.png, 89C9FA, 000000, 000000, 000000, False, False, IHRights, 8255, none, https://iranhr.net/, True, None, []), None), 1586417830228267009, 1586417830228267009, (twitter.com/ihrights/statu…, https://twitter.com/ihrights/status/1586417830228267009, https://t.co/5MHIgxrjHW), 0, 7, False, None, <a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>, Today’s peaceful student protests of #UniversityofTehran, College of Engineering was attacked by basij and plainclo… https://t.co/J61gZ0Gy9z, True, (False, Sat May 02 13:32:40 +0000 2009, True, False, Director of NGO «Iran Human Rights\" @IHRights Professor at the University of Oslo- مدیر سازمان حقوق بشر ایران- پزشک و استاددانشکده پزشکی دانشگاه اسلو, 9660, 5589, 1642, True, 37196329, 37196329, False, 173, Global, Mahmood Amiry-Moghaddam, C0DEED, http://abs.twimg.com/images/themes/theme1/bg.png, https://abs.twimg.com/images/themes/theme1/bg.png, False, https://pbs.twimg.com/profile_banners/37196329/1425896261, http://pbs.twimg.com/profile_images/1306244699716489216/BfQaxpEW_normal.jpg, https://pbs.twimg.com/profile_images/1306244699716489216/BfQaxpEW_normal.jpg, 1DA1F2, C0DEED, DDEEF6, 333333, True, False, iranhr, 11461, none, http://www.iranhr.net, True, None, []), None)today’s peaceful student protests of #universityoftehran, college of engineering was attacked by basij and plainclothes security forces (who had illegally entered the campus). security forces waiting outside arresting and taking students away to undisclosed location #mahsa_aminiRT @iranhr: Today’s peaceful student protests of #UniversityofTehran, College of Engineering was attacked by basij and plainclothes securit…
3Sat Oct 29 18:38:00 +0000 20221586427143302443008None💙KOHAKU225💙127FalseBaton Rouge, LANone316(None, Fri Oct 28 23:51:52 +0000 2022, [0, 140], ([Row(indices=[45, 48], text='bj'), Row(indices=[49, 53], text='pyt'), Row(indices=[54, 61], text='baddie'), Row(indices=[62, 69], text='leaked'), Row(indices=[70, 76], text='oussy'), Row(indices=[77, 87], text='backshots'), Row(indices=[88, 103], text='sellingcontent'), Row(indices=[104, 115], text='schoolthot')], None, [], [Row(display_url='twitter.com/i/web/status/1…', expanded_url='https://twitter.com/i/web/status/1586143745078353920', indices=[117, 140], url='https://t.co/Vdd4JmZ8zn')], []), None, ([0, 187], ([Row(indices=[45, 48], text='bj'), Row(indices=[49, 53], text='pyt'), Row(indices=[54, 61], text='baddie'), Row(indices=[62, 69], text='leaked'), Row(indices=[70, 76], text='oussy'), Row(indices=[77, 87], text='backshots'), Row(indices=[88, 103], text='sellingcontent'), Row(indices=[104, 115], text='schoolthot'), Row(indices=[116, 119], text='dm'), Row(indices=[120, 125], text='head'), Row(indices=[126, 137], text='throatgoat'), Row(indices=[138, 142], text='bbc'), Row(indices=[143, 150], text='sloppy'), Row(indices=[151, 157], text='leaks'), Row(indices=[158, 166], text='college'), Row(indices=[167, 172], text='nsfw'), Row(indices=[173, 179], text='ebony'), Row(indices=[180, 187], text='pyteen')], [Row(additional_media_info=Row(description=None, embeddable=None, monetizable=False, title=None), description=None, display_url='pic.twitter.com/XKFQqhgNTN', expanded_url='https://twitter.com/freaky_central2/status/1586143745078353920/video/1', id=1586143673661677569, id_str='1586143673661677569', indices=[188, 211], media_url='http://pbs.twimg.com/ext_tw_video_thumb/1586143673661677569/pu/img/5hJNsSHYfpGRBKXF.jpg', media_url_https='https://pbs.twimg.com/ext_tw_video_thumb/1586143673661677569/pu/img/5hJNsSHYfpGRBKXF.jpg', sizes=Row(large=Row(h=1280, resize='fit', w=592), medium=Row(h=1200, resize='fit', w=555), small=Row(h=680, resize='fit', w=315), thumb=Row(h=150, resize='crop', w=150)), source_status_id=None, source_status_id_str=None, source_user_id=None, source_user_id_str=None, type='video', url='https://t.co/XKFQqhgNTN', video_info=Row(aspect_ratio=[37, 80], duration_millis=27627, variants=[Row(bitrate=2176000, content_type='video/mp4', url='https://video.twimg.com/ext_tw_video/1586143673661677569/pu/vid/592x1280/gjcYcZKo5e-ZYGGa.mp4?tag=12'), Row(bitrate=None, content_type='application/x-mpegURL', url='https://video.twimg.com/ext_tw_video/1586143673661677569/pu/pl/LVnxWoY7O9mLNE5G.m3u8?tag=12&container=fmp4'), Row(bitrate=632000, content_type='video/mp4', url='https://video.twimg.com/ext_tw_video/1586143673661677569/pu/vid/320x690/8hHnDD2IseH3kEhM.mp4?tag=12'), Row(bitrate=950000, content_type='video/mp4', url='https://video.twimg.com/ext_tw_video/1586143673661677569/pu/vid/480x1036/RLYUVMasvBGnSSvI.mp4?tag=12')]))], [], [], []), ([Row(additional_media_info=Row(description=None, embeddable=None, monetizable=False, title=None), description=None, display_url='pic.twitter.com/XKFQqhgNTN', expanded_url='https://twitter.com/freaky_central2/status/1586143745078353920/video/1', id=1586143673661677569, id_str='1586143673661677569', indices=[188, 211], media_url='http://pbs.twimg.com/ext_tw_video_thumb/1586143673661677569/pu/img/5hJNsSHYfpGRBKXF.jpg', media_url_https='https://pbs.twimg.com/ext_tw_video_thumb/1586143673661677569/pu/img/5hJNsSHYfpGRBKXF.jpg', sizes=Row(large=Row(h=1280, resize='fit', w=592), medium=Row(h=1200, resize='fit', w=555), small=Row(h=680, resize='fit', w=315), thumb=Row(h=150, resize='crop', w=150)), source_status_id=None, source_status_id_str=None, source_user_id=None, source_user_id_str=None, type='video', url='https://t.co/XKFQqhgNTN', video_info=Row(aspect_ratio=[37, 80], duration_millis=27627, variants=[Row(bitrate=2176000, content_type='video/mp4', url='https://video.twimg.com/ext_tw_video/1586143673661677569/pu/vid/592x1280/gjcYcZKo5e-ZYGGa.mp4?tag=12'), Row(bitrate=None, content_type='application/x-mpegURL', url='https://video.twimg.com/ext_tw_video/1586143673661677569/pu/pl/LVnxWoY7O9mLNE5G.m3u8?tag=12&container=fmp4'), Row(bitrate=632000, content_type='video/mp4', url='https://video.twimg.com/ext_tw_video/1586143673661677569/pu/vid/320x690/8hHnDD2IseH3kEhM.mp4?tag=12'), Row(bitrate=950000, content_type='video/mp4', url='https://video.twimg.com/ext_tw_video/1586143673661677569/pu/vid/480x1036/RLYUVMasvBGnSSvI.mp4?tag=12')]))],), First 100 follows gets a surprise \\nOpen dms\\n\\n#bj #pyt #baddie #leaked #oussy #backshots #sellingcontent #schoolthot #dm #head #throatgoat #bbc #sloppy #leaks #college #nsfw #ebony #pyteen https://t.co/XKFQqhgNTN), 155, False, low, None, 1586143745078353920, 1586143745078353920, None, None, None, None, None, False, en, None, False, 0, None, None, None, None, 3, 16, False, None, <a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>, First 100 follows gets a surprise \\nOpen dms\\n\\n#bj #pyt #baddie #leaked #oussy #backshots #sellingcontent #schoolthot… https://t.co/Vdd4JmZ8zn, True, (False, Tue Oct 25 19:35:23 +0000 2022, True, False, everything u need in one place; DM for credit or removal DAILY POST | FOLLOW FOR MORE| SELLING PERSONAL CONTENT DMS OPEN | DM FOR CHEAP PROMO #promo #ads, 82, 2627, 1, False, 1584991955146121217, 1584991955146121217, False, 12, None, FC🔞, F5F8FA, , , False, https://pbs.twimg.com/profile_banners/1584991955146121217/1666726989, http://pbs.twimg.com/profile_images/1584993944756256799/ZOWKxRRp_normal.jpg, https://pbs.twimg.com/profile_images/1584993944756256799/ZOWKxRRp_normal.jpg, 1DA1F2, C0DEED, DDEEF6, 333333, True, False, freaky_central2, 87, none, None, False, None, []), None)first 100 follows gets a surprise \\nopen dms\\n\\n#bj #pyt #baddie #leaked #oussy #backshots #sellingcontent #schoolthot #dm #head #throatgoat #bbc #sloppy #leaks #college #nsfw #ebony #pyteen https://t.co/xkfqqhgntnRT @freaky_central2: First 100 follows gets a surprise \\nOpen dms\\n\\n#bj #pyt #baddie #leaked #oussy #backshots #sellingcontent #schoolthot #d…
4Sat Oct 29 18:38:43 +0000 20221586427325264310273Nonemaoooo6FalseNoneNone210(None, Sat Oct 29 18:23:54 +0000 2022, None, ([Row(indices=[37, 56], text='UniversityofTehran')], None, [], [Row(display_url='twitter.com/i/web/status/1…', expanded_url='https://twitter.com/i/web/status/1586423598645841922', indices=[117, 140], url='https://t.co/J61gZ0Gy9z')], []), None, ([0, 279], ([Row(indices=[37, 56], text='UniversityofTehran'), Row(indices=[267, 279], text='Mahsa_Amini')], None, [], [], []), None, Today’s peaceful student protests of #UniversityofTehran, College of Engineering was attacked by basij and plainclothes security forces (who had illegally entered the campus). Security forces waiting outside arresting and taking students away to undisclosed location #Mahsa_Amini), 12, False, low, None, 1586423598645841922, 1586423598645841922, None, None, None, None, None, True, en, None, None, 0, (None, Sat Oct 29 18:00:59 +0000 2022, None, ([Row(indices=[11, 23], text='دانشکده_فنی')], None, [], [Row(display_url='twitter.com/i/web/status/1…', expanded_url='https://twitter.com/i/web/status/1586417830228267009', indices=[117, 140], url='https://t.co/Fw2dvhchXt')], []), None, ([0, 279], Row(hashtags=[Row(indices=[11, 23], text='دانشکده_فنی'), Row(indices=[268, 279], text='مهسا_امینی')], media=None, symbols=[], urls=[], user_mentions=[]), None, ۱/امروز در #دانشکده_فنی دانشگاه تهران، دانشجویان با تجمع مسالمت‌آمیز، شعار دادند و خواسته‌های خود را مطرح کردند اما مورد حمله نیروهای بسیج دانشجویی قرار گرفتند. نیروهای لباس شخصی به طور غیرقانونی از صبح در دانشگاه مستقر شده بودند و با بسیجی‌ها در این حمله همراه شدند.\\n#مهسا_امینی), 64, False, low, None, 1586417830228267009, 1586417830228267009, None, None, None, None, None, False, fa, None, None, 1, None, None, 1, 26, False, None, <a href=\"https://mobile.twitter.com\" rel=\"nofollow\">Twitter Web App</a>, ۱/امروز در #دانشکده_فنی دانشگاه تهران، دانشجویان با تجمع مسالمت‌آمیز، شعار دادند و خواسته‌های خود را مطرح کردند اما… https://t.co/Fw2dvhchXt, True, (False, Tue Aug 11 07:17:35 +0000 2015, False, False, Official account of Iran Human Rights (IHR NGO)- Also visit @iranhr حساب رسمی توییتر سازمان حقوق بشر ایران, 1067, 9848, 284, True, 3414505683, 3414505683, False, 119, Oslo, Norway, Iran Human Rights (IHR NGO), 000000, http://abs.twimg.com/images/themes/theme1/bg.png, https://abs.twimg.com/images/themes/theme1/bg.png, False, https://pbs.twimg.com/profile_banners/3414505683/1665403153, http://pbs.twimg.com/profile_images/631002652361424896/NWkvQXd-_normal.png, https://pbs.twimg.com/profile_images/631002652361424896/NWkvQXd-_normal.png, 89C9FA, 000000, 000000, 000000, False, False, IHRights, 8255, none, https://iranhr.net/, True, None, []), None), 1586417830228267009, 1586417830228267009, (twitter.com/ihrights/statu…, https://twitter.com/ihrights/status/1586417830228267009, https://t.co/5MHIgxrjHW), 2, 10, False, None, <a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>, Today’s peaceful student protests of #UniversityofTehran, College of Engineering was attacked by basij and plainclo… https://t.co/J61gZ0Gy9z, True, (False, Sat May 02 13:32:40 +0000 2009, True, False, Director of NGO «Iran Human Rights\" @IHRights Professor at the University of Oslo- مدیر سازمان حقوق بشر ایران- پزشک و استاددانشکده پزشکی دانشگاه اسلو, 9660, 5590, 1642, True, 37196329, 37196329, False, 173, Global, Mahmood Amiry-Moghaddam, C0DEED, http://abs.twimg.com/images/themes/theme1/bg.png, https://abs.twimg.com/images/themes/theme1/bg.png, False, https://pbs.twimg.com/profile_banners/37196329/1425896261, http://pbs.twimg.com/profile_images/1306244699716489216/BfQaxpEW_normal.jpg, https://pbs.twimg.com/profile_images/1306244699716489216/BfQaxpEW_normal.jpg, 1DA1F2, C0DEED, DDEEF6, 333333, True, False, iranhr, 11461, none, http://www.iranhr.net, True, None, []), None)today’s peaceful student protests of #universityoftehran, college of engineering was attacked by basij and plainclothes security forces (who had illegally entered the campus). security forces waiting outside arresting and taking students away to undisclosed location #mahsa_aminiRT @iranhr: Today’s peaceful student protests of #UniversityofTehran, College of Engineering was attacked by basij and plainclothes securit…
\n", + "
" + ], + "text/plain": [ + " created_at id geo_coordinates \\\n", + "0 Sat Oct 29 18:36:18 +0000 2022 1586426715760459778 None \n", + "1 Sat Oct 29 18:36:18 +0000 2022 1586426719090589696 None \n", + "2 Sat Oct 29 18:36:55 +0000 2022 1586426871524343814 None \n", + "3 Sat Oct 29 18:38:00 +0000 2022 1586427143302443008 None \n", + "4 Sat Oct 29 18:38:43 +0000 2022 1586427325264310273 None \n", + "\n", + " user_name followers_count verified_user user_location \\\n", + "0 TitanUp Ty 2256 False None \n", + "1 SickYooo 88 False None \n", + "2 Saturn 883 False America \n", + "3 💙KOHAKU225💙 127 False Baton Rouge, LA \n", + "4 maoooo 6 False None \n", + "\n", + " user_description reply_count retweet_count \\\n", + "0 #LGM #TITANS #GBO🍊 #FJB #NJ #USA 🇺🇸 5 51 \n", + "1 .. 3 168 \n", + "2 #براندازم #نه_به_جمهوری_اسلامی 0 7 \n", + "3 None 3 16 \n", + "4 None 2 10 \n", + "\n", + " retweeted_status \\\n", + "0 (None, Sat Oct 29 13:22:46 +0000 2022, [0, 82], ([Row(indices=[49, 53], text='SEC'), Row(indices=[54, 70], text='CollegeFootball'), Row(indices=[71, 75], text='cfb'), Row(indices=[76, 82], text='NCAAF')], [Row(additional_media_info=None, description=None, display_url='pic.twitter.com/ra3EkYetqu', expanded_url='https://twitter.com/JWPSports/status/1586347814967132163/photo/1', id=1586347810932154368, id_str='1586347810932154368', indices=[83, 106], media_url='http://pbs.twimg.com/media/FgPW7eDUYAAPV17.jpg', media_url_https='https://pbs.twimg.com/media/FgPW7eDUYAAPV17.jpg', sizes=Row(large=Row(h=1159, resize='fit', w=1172), medium=Row(h=1159, resize='fit', w=1172), small=Row(h=672, resize='fit', w=680), thumb=Row(h=150, resize='crop', w=150)), source_status_id=None, source_status_id_str=None, source_user_id=None, source_user_id_str=None, type='photo', url='https://t.co/ra3EkYetqu')], [], [], []), ([Row(additional_media_info=None, description=None, display_url='pic.twitter.com/ra3EkYetqu', expanded_url='https://twitter.com/JWPSports/status/1586347814967132163/photo/1', id=1586347810932154368, id_str='1586347810932154368', indices=[83, 106], media_url='http://pbs.twimg.com/media/FgPW7eDUYAAPV17.jpg', media_url_https='https://pbs.twimg.com/media/FgPW7eDUYAAPV17.jpg', sizes=Row(large=Row(h=1159, resize='fit', w=1172), medium=Row(h=1159, resize='fit', w=1172), small=Row(h=672, resize='fit', w=680), thumb=Row(h=150, resize='crop', w=150)), source_status_id=None, source_status_id_str=None, source_user_id=None, source_user_id_str=None, type='photo', url='https://t.co/ra3EkYetqu', video_info=None)],), None, 402, False, low, None, 1586347814967132163, 1586347814967132163, None, None, None, None, None, False, en, None, False, 3, None, None, None, None, 5, 51, False, None,
Twitter for iPhone, Your current SEC College Football QBR leaders.👀\\n\\n#SEC #CollegeFootball #cfb #NCAAF https://t.co/ra3EkYetqu, False, (False, Fri Jan 31 15:24:06 +0000 2020, True, False, JWP Sports! Be sure to find me on Instagram @jwp_sports | @cfbalerts only on Instagram. Connect with me on all platforms ⬇️, 1935, 4414, 1857, True, 1223265683565416448, 1223265683565416448, False, 6, None, JWP Sports , F5F8FA, , , False, None, http://pbs.twimg.com/profile_images/1225762639957106688/k75frUmv_normal.jpg, https://pbs.twimg.com/profile_images/1225762639957106688/k75frUmv_normal.jpg, 1DA1F2, C0DEED, DDEEF6, 333333, True, False, JWPSports, 1623, none, https://linktr.ee/jwpsports, False, None, []), None) \n", + "1 (None, Sun Feb 13 19:58:23 +0000 2022, [0, 140], ([Row(indices=[52, 66], text='collegebaddie'), Row(indices=[67, 75], text='college'), Row(indices=[76, 87], text='latinahead'), Row(indices=[88, 102], text='latinaexposed')], None, [], [Row(display_url='twitter.com/i/web/status/1…', expanded_url='https://twitter.com/i/web/status/1492951306398355456', indices=[104, 127], url='https://t.co/tLxG8VA9ih')], []), None, ([0, 155], ([Row(indices=[52, 66], text='collegebaddie'), Row(indices=[67, 75], text='college'), Row(indices=[76, 87], text='latinahead'), Row(indices=[88, 102], text='latinaexposed'), Row(indices=[103, 116], text='LatinaBeauty'), Row(indices=[117, 130], text='sloppythroat'), Row(indices=[131, 147], text='sloppyheadGIVER'), Row(indices=[148, 155], text='blowie')], [Row(additional_media_info=Row(description=None, embeddable=None, monetizable=False, title=None), description=None, display_url='pic.twitter.com/GhG6abUn99', expanded_url='https://twitter.com/pxrnstachee/status/1492951306398355456/video/1', id=1492951256318431232, id_str='1492951256318431232', indices=[156, 179], media_url='http://pbs.twimg.com/ext_tw_video_thumb/1492951256318431232/pu/img/PeBtNX6QBgdDQZHX.jpg', media_url_https='https://pbs.twimg.com/ext_tw_video_thumb/1492951256318431232/pu/img/PeBtNX6QBgdDQZHX.jpg', sizes=Row(large=Row(h=1280, resize='fit', w=732), medium=Row(h=1200, resize='fit', w=686), small=Row(h=680, resize='fit', w=389), thumb=Row(h=150, resize='crop', w=150)), source_status_id=None, source_status_id_str=None, source_user_id=None, source_user_id_str=None, type='video', url='https://t.co/GhG6abUn99', video_info=Row(aspect_ratio=[183, 320], duration_millis=45001, variants=[Row(bitrate=632000, content_type='video/mp4', url='https://video.twimg.com/ext_tw_video/1492951256318431232/pu/vid/320x558/hDDxsZ1Kgt_l7sg3.mp4?tag=12'), Row(bitrate=None, content_type='application/x-mpegURL', url='https://video.twimg.com/ext_tw_video/1492951256318431232/pu/pl/np_2fWZzuV1YYGWs.m3u8?tag=12&container=fmp4'), Row(bitrate=2176000, content_type='video/mp4', url='https://video.twimg.com/ext_tw_video/1492951256318431232/pu/vid/720x1258/OSWvqvJs35tJrRRC.mp4?tag=12'), Row(bitrate=950000, content_type='video/mp4', url='https://video.twimg.com/ext_tw_video/1492951256318431232/pu/vid/480x838/ZqGt4Qzk4jREnItM.mp4?tag=12')]))], [], [], []), ([Row(additional_media_info=Row(description=None, embeddable=None, monetizable=False, title=None), description=None, display_url='pic.twitter.com/GhG6abUn99', expanded_url='https://twitter.com/pxrnstachee/status/1492951306398355456/video/1', id=1492951256318431232, id_str='1492951256318431232', indices=[156, 179], media_url='http://pbs.twimg.com/ext_tw_video_thumb/1492951256318431232/pu/img/PeBtNX6QBgdDQZHX.jpg', media_url_https='https://pbs.twimg.com/ext_tw_video_thumb/1492951256318431232/pu/img/PeBtNX6QBgdDQZHX.jpg', sizes=Row(large=Row(h=1280, resize='fit', w=732), medium=Row(h=1200, resize='fit', w=686), small=Row(h=680, resize='fit', w=389), thumb=Row(h=150, resize='crop', w=150)), source_status_id=None, source_status_id_str=None, source_user_id=None, source_user_id_str=None, type='video', url='https://t.co/GhG6abUn99', video_info=Row(aspect_ratio=[183, 320], duration_millis=45001, variants=[Row(bitrate=632000, content_type='video/mp4', url='https://video.twimg.com/ext_tw_video/1492951256318431232/pu/vid/320x558/hDDxsZ1Kgt_l7sg3.mp4?tag=12'), Row(bitrate=None, content_type='application/x-mpegURL', url='https://video.twimg.com/ext_tw_video/1492951256318431232/pu/pl/np_2fWZzuV1YYGWs.m3u8?tag=12&container=fmp4'), Row(bitrate=2176000, content_type='video/mp4', url='https://video.twimg.com/ext_tw_video/1492951256318431232/pu/vid/720x1258/OSWvqvJs35tJrRRC.mp4?tag=12'), Row(bitrate=950000, content_type='video/mp4', url='https://video.twimg.com/ext_tw_video/1492951256318431232/pu/vid/480x838/ZqGt4Qzk4jREnItM.mp4?tag=12')]))],), Latina baddie wanted to suck me off during a party😫 #collegebaddie #college #latinahead #latinaexposed #LatinaBeauty #sloppythroat #sloppyheadGIVER #blowie https://t.co/GhG6abUn99), 1275, False, low, None, 1492951306398355456, 1492951306398355456, None, None, None, None, None, False, en, None, True, 0, None, None, None, None, 3, 168, False, None, Twitter for iPhone, Latina baddie wanted to suck me off during a party😫 #collegebaddie #college #latinahead #latinaexposed… https://t.co/tLxG8VA9ih, True, (False, Thu May 10 01:13:52 +0000 2018, True, False, | 18+ Daily Content | 🌹No Content Is Owned By The Maker Of This Account🌹| Dm for credit/removal no copyright infringement intended, 8017, 64513, 45, False, 994384995740352512, 994384995740352512, False, 216, None, ParadisePxrn (dm for cheap promo), F5F8FA, , , False, https://pbs.twimg.com/profile_banners/994384995740352512/1666345959, http://pbs.twimg.com/profile_images/1583363185045667840/IYjjH-zG_normal.jpg, https://pbs.twimg.com/profile_images/1583363185045667840/IYjjH-zG_normal.jpg, 1DA1F2, C0DEED, DDEEF6, 333333, True, False, pxrnstachee, 565, none, https://discord.gg/sullen, False, None, []), None) \n", + "2 (None, Sat Oct 29 18:23:54 +0000 2022, None, ([Row(indices=[37, 56], text='UniversityofTehran')], None, [], [Row(display_url='twitter.com/i/web/status/1…', expanded_url='https://twitter.com/i/web/status/1586423598645841922', indices=[117, 140], url='https://t.co/J61gZ0Gy9z')], []), None, ([0, 279], ([Row(indices=[37, 56], text='UniversityofTehran'), Row(indices=[267, 279], text='Mahsa_Amini')], None, [], [], []), None, Today’s peaceful student protests of #UniversityofTehran, College of Engineering was attacked by basij and plainclothes security forces (who had illegally entered the campus). Security forces waiting outside arresting and taking students away to undisclosed location #Mahsa_Amini), 11, False, low, None, 1586423598645841922, 1586423598645841922, None, None, None, None, None, True, en, None, None, 0, (None, Sat Oct 29 18:00:59 +0000 2022, None, ([Row(indices=[11, 23], text='دانشکده_فنی')], None, [], [Row(display_url='twitter.com/i/web/status/1…', expanded_url='https://twitter.com/i/web/status/1586417830228267009', indices=[117, 140], url='https://t.co/Fw2dvhchXt')], []), None, ([0, 279], Row(hashtags=[Row(indices=[11, 23], text='دانشکده_فنی'), Row(indices=[268, 279], text='مهسا_امینی')], media=None, symbols=[], urls=[], user_mentions=[]), None, ۱/امروز در #دانشکده_فنی دانشگاه تهران، دانشجویان با تجمع مسالمت‌آمیز، شعار دادند و خواسته‌های خود را مطرح کردند اما مورد حمله نیروهای بسیج دانشجویی قرار گرفتند. نیروهای لباس شخصی به طور غیرقانونی از صبح در دانشگاه مستقر شده بودند و با بسیجی‌ها در این حمله همراه شدند.\\n#مهسا_امینی), 63, False, low, None, 1586417830228267009, 1586417830228267009, None, None, None, None, None, False, fa, None, None, 1, None, None, 1, 25, False, None, Twitter Web App, ۱/امروز در #دانشکده_فنی دانشگاه تهران، دانشجویان با تجمع مسالمت‌آمیز، شعار دادند و خواسته‌های خود را مطرح کردند اما… https://t.co/Fw2dvhchXt, True, (False, Tue Aug 11 07:17:35 +0000 2015, False, False, Official account of Iran Human Rights (IHR NGO)- Also visit @iranhr حساب رسمی توییتر سازمان حقوق بشر ایران, 1067, 9849, 284, True, 3414505683, 3414505683, False, 120, Oslo, Norway, Iran Human Rights (IHR NGO), 000000, http://abs.twimg.com/images/themes/theme1/bg.png, https://abs.twimg.com/images/themes/theme1/bg.png, False, https://pbs.twimg.com/profile_banners/3414505683/1665403153, http://pbs.twimg.com/profile_images/631002652361424896/NWkvQXd-_normal.png, https://pbs.twimg.com/profile_images/631002652361424896/NWkvQXd-_normal.png, 89C9FA, 000000, 000000, 000000, False, False, IHRights, 8255, none, https://iranhr.net/, True, None, []), None), 1586417830228267009, 1586417830228267009, (twitter.com/ihrights/statu…, https://twitter.com/ihrights/status/1586417830228267009, https://t.co/5MHIgxrjHW), 0, 7, False, None, Twitter for iPhone, Today’s peaceful student protests of #UniversityofTehran, College of Engineering was attacked by basij and plainclo… https://t.co/J61gZ0Gy9z, True, (False, Sat May 02 13:32:40 +0000 2009, True, False, Director of NGO «Iran Human Rights\" @IHRights Professor at the University of Oslo- مدیر سازمان حقوق بشر ایران- پزشک و استاددانشکده پزشکی دانشگاه اسلو, 9660, 5589, 1642, True, 37196329, 37196329, False, 173, Global, Mahmood Amiry-Moghaddam, C0DEED, http://abs.twimg.com/images/themes/theme1/bg.png, https://abs.twimg.com/images/themes/theme1/bg.png, False, https://pbs.twimg.com/profile_banners/37196329/1425896261, http://pbs.twimg.com/profile_images/1306244699716489216/BfQaxpEW_normal.jpg, https://pbs.twimg.com/profile_images/1306244699716489216/BfQaxpEW_normal.jpg, 1DA1F2, C0DEED, DDEEF6, 333333, True, False, iranhr, 11461, none, http://www.iranhr.net, True, None, []), None) \n", + "3 (None, Fri Oct 28 23:51:52 +0000 2022, [0, 140], ([Row(indices=[45, 48], text='bj'), Row(indices=[49, 53], text='pyt'), Row(indices=[54, 61], text='baddie'), Row(indices=[62, 69], text='leaked'), Row(indices=[70, 76], text='oussy'), Row(indices=[77, 87], text='backshots'), Row(indices=[88, 103], text='sellingcontent'), Row(indices=[104, 115], text='schoolthot')], None, [], [Row(display_url='twitter.com/i/web/status/1…', expanded_url='https://twitter.com/i/web/status/1586143745078353920', indices=[117, 140], url='https://t.co/Vdd4JmZ8zn')], []), None, ([0, 187], ([Row(indices=[45, 48], text='bj'), Row(indices=[49, 53], text='pyt'), Row(indices=[54, 61], text='baddie'), Row(indices=[62, 69], text='leaked'), Row(indices=[70, 76], text='oussy'), Row(indices=[77, 87], text='backshots'), Row(indices=[88, 103], text='sellingcontent'), Row(indices=[104, 115], text='schoolthot'), Row(indices=[116, 119], text='dm'), Row(indices=[120, 125], text='head'), Row(indices=[126, 137], text='throatgoat'), Row(indices=[138, 142], text='bbc'), Row(indices=[143, 150], text='sloppy'), Row(indices=[151, 157], text='leaks'), Row(indices=[158, 166], text='college'), Row(indices=[167, 172], text='nsfw'), Row(indices=[173, 179], text='ebony'), Row(indices=[180, 187], text='pyteen')], [Row(additional_media_info=Row(description=None, embeddable=None, monetizable=False, title=None), description=None, display_url='pic.twitter.com/XKFQqhgNTN', expanded_url='https://twitter.com/freaky_central2/status/1586143745078353920/video/1', id=1586143673661677569, id_str='1586143673661677569', indices=[188, 211], media_url='http://pbs.twimg.com/ext_tw_video_thumb/1586143673661677569/pu/img/5hJNsSHYfpGRBKXF.jpg', media_url_https='https://pbs.twimg.com/ext_tw_video_thumb/1586143673661677569/pu/img/5hJNsSHYfpGRBKXF.jpg', sizes=Row(large=Row(h=1280, resize='fit', w=592), medium=Row(h=1200, resize='fit', w=555), small=Row(h=680, resize='fit', w=315), thumb=Row(h=150, resize='crop', w=150)), source_status_id=None, source_status_id_str=None, source_user_id=None, source_user_id_str=None, type='video', url='https://t.co/XKFQqhgNTN', video_info=Row(aspect_ratio=[37, 80], duration_millis=27627, variants=[Row(bitrate=2176000, content_type='video/mp4', url='https://video.twimg.com/ext_tw_video/1586143673661677569/pu/vid/592x1280/gjcYcZKo5e-ZYGGa.mp4?tag=12'), Row(bitrate=None, content_type='application/x-mpegURL', url='https://video.twimg.com/ext_tw_video/1586143673661677569/pu/pl/LVnxWoY7O9mLNE5G.m3u8?tag=12&container=fmp4'), Row(bitrate=632000, content_type='video/mp4', url='https://video.twimg.com/ext_tw_video/1586143673661677569/pu/vid/320x690/8hHnDD2IseH3kEhM.mp4?tag=12'), Row(bitrate=950000, content_type='video/mp4', url='https://video.twimg.com/ext_tw_video/1586143673661677569/pu/vid/480x1036/RLYUVMasvBGnSSvI.mp4?tag=12')]))], [], [], []), ([Row(additional_media_info=Row(description=None, embeddable=None, monetizable=False, title=None), description=None, display_url='pic.twitter.com/XKFQqhgNTN', expanded_url='https://twitter.com/freaky_central2/status/1586143745078353920/video/1', id=1586143673661677569, id_str='1586143673661677569', indices=[188, 211], media_url='http://pbs.twimg.com/ext_tw_video_thumb/1586143673661677569/pu/img/5hJNsSHYfpGRBKXF.jpg', media_url_https='https://pbs.twimg.com/ext_tw_video_thumb/1586143673661677569/pu/img/5hJNsSHYfpGRBKXF.jpg', sizes=Row(large=Row(h=1280, resize='fit', w=592), medium=Row(h=1200, resize='fit', w=555), small=Row(h=680, resize='fit', w=315), thumb=Row(h=150, resize='crop', w=150)), source_status_id=None, source_status_id_str=None, source_user_id=None, source_user_id_str=None, type='video', url='https://t.co/XKFQqhgNTN', video_info=Row(aspect_ratio=[37, 80], duration_millis=27627, variants=[Row(bitrate=2176000, content_type='video/mp4', url='https://video.twimg.com/ext_tw_video/1586143673661677569/pu/vid/592x1280/gjcYcZKo5e-ZYGGa.mp4?tag=12'), Row(bitrate=None, content_type='application/x-mpegURL', url='https://video.twimg.com/ext_tw_video/1586143673661677569/pu/pl/LVnxWoY7O9mLNE5G.m3u8?tag=12&container=fmp4'), Row(bitrate=632000, content_type='video/mp4', url='https://video.twimg.com/ext_tw_video/1586143673661677569/pu/vid/320x690/8hHnDD2IseH3kEhM.mp4?tag=12'), Row(bitrate=950000, content_type='video/mp4', url='https://video.twimg.com/ext_tw_video/1586143673661677569/pu/vid/480x1036/RLYUVMasvBGnSSvI.mp4?tag=12')]))],), First 100 follows gets a surprise \\nOpen dms\\n\\n#bj #pyt #baddie #leaked #oussy #backshots #sellingcontent #schoolthot #dm #head #throatgoat #bbc #sloppy #leaks #college #nsfw #ebony #pyteen https://t.co/XKFQqhgNTN), 155, False, low, None, 1586143745078353920, 1586143745078353920, None, None, None, None, None, False, en, None, False, 0, None, None, None, None, 3, 16, False, None, Twitter for iPhone, First 100 follows gets a surprise \\nOpen dms\\n\\n#bj #pyt #baddie #leaked #oussy #backshots #sellingcontent #schoolthot… https://t.co/Vdd4JmZ8zn, True, (False, Tue Oct 25 19:35:23 +0000 2022, True, False, everything u need in one place; DM for credit or removal DAILY POST | FOLLOW FOR MORE| SELLING PERSONAL CONTENT DMS OPEN | DM FOR CHEAP PROMO #promo #ads, 82, 2627, 1, False, 1584991955146121217, 1584991955146121217, False, 12, None, FC🔞, F5F8FA, , , False, https://pbs.twimg.com/profile_banners/1584991955146121217/1666726989, http://pbs.twimg.com/profile_images/1584993944756256799/ZOWKxRRp_normal.jpg, https://pbs.twimg.com/profile_images/1584993944756256799/ZOWKxRRp_normal.jpg, 1DA1F2, C0DEED, DDEEF6, 333333, True, False, freaky_central2, 87, none, None, False, None, []), None) \n", + "4 (None, Sat Oct 29 18:23:54 +0000 2022, None, ([Row(indices=[37, 56], text='UniversityofTehran')], None, [], [Row(display_url='twitter.com/i/web/status/1…', expanded_url='https://twitter.com/i/web/status/1586423598645841922', indices=[117, 140], url='https://t.co/J61gZ0Gy9z')], []), None, ([0, 279], ([Row(indices=[37, 56], text='UniversityofTehran'), Row(indices=[267, 279], text='Mahsa_Amini')], None, [], [], []), None, Today’s peaceful student protests of #UniversityofTehran, College of Engineering was attacked by basij and plainclothes security forces (who had illegally entered the campus). Security forces waiting outside arresting and taking students away to undisclosed location #Mahsa_Amini), 12, False, low, None, 1586423598645841922, 1586423598645841922, None, None, None, None, None, True, en, None, None, 0, (None, Sat Oct 29 18:00:59 +0000 2022, None, ([Row(indices=[11, 23], text='دانشکده_فنی')], None, [], [Row(display_url='twitter.com/i/web/status/1…', expanded_url='https://twitter.com/i/web/status/1586417830228267009', indices=[117, 140], url='https://t.co/Fw2dvhchXt')], []), None, ([0, 279], Row(hashtags=[Row(indices=[11, 23], text='دانشکده_فنی'), Row(indices=[268, 279], text='مهسا_امینی')], media=None, symbols=[], urls=[], user_mentions=[]), None, ۱/امروز در #دانشکده_فنی دانشگاه تهران، دانشجویان با تجمع مسالمت‌آمیز، شعار دادند و خواسته‌های خود را مطرح کردند اما مورد حمله نیروهای بسیج دانشجویی قرار گرفتند. نیروهای لباس شخصی به طور غیرقانونی از صبح در دانشگاه مستقر شده بودند و با بسیجی‌ها در این حمله همراه شدند.\\n#مهسا_امینی), 64, False, low, None, 1586417830228267009, 1586417830228267009, None, None, None, None, None, False, fa, None, None, 1, None, None, 1, 26, False, None, Twitter Web App, ۱/امروز در #دانشکده_فنی دانشگاه تهران، دانشجویان با تجمع مسالمت‌آمیز، شعار دادند و خواسته‌های خود را مطرح کردند اما… https://t.co/Fw2dvhchXt, True, (False, Tue Aug 11 07:17:35 +0000 2015, False, False, Official account of Iran Human Rights (IHR NGO)- Also visit @iranhr حساب رسمی توییتر سازمان حقوق بشر ایران, 1067, 9848, 284, True, 3414505683, 3414505683, False, 119, Oslo, Norway, Iran Human Rights (IHR NGO), 000000, http://abs.twimg.com/images/themes/theme1/bg.png, https://abs.twimg.com/images/themes/theme1/bg.png, False, https://pbs.twimg.com/profile_banners/3414505683/1665403153, http://pbs.twimg.com/profile_images/631002652361424896/NWkvQXd-_normal.png, https://pbs.twimg.com/profile_images/631002652361424896/NWkvQXd-_normal.png, 89C9FA, 000000, 000000, 000000, False, False, IHRights, 8255, none, https://iranhr.net/, True, None, []), None), 1586417830228267009, 1586417830228267009, (twitter.com/ihrights/statu…, https://twitter.com/ihrights/status/1586417830228267009, https://t.co/5MHIgxrjHW), 2, 10, False, None, Twitter for iPhone, Today’s peaceful student protests of #UniversityofTehran, College of Engineering was attacked by basij and plainclo… https://t.co/J61gZ0Gy9z, True, (False, Sat May 02 13:32:40 +0000 2009, True, False, Director of NGO «Iran Human Rights\" @IHRights Professor at the University of Oslo- مدیر سازمان حقوق بشر ایران- پزشک و استاددانشکده پزشکی دانشگاه اسلو, 9660, 5590, 1642, True, 37196329, 37196329, False, 173, Global, Mahmood Amiry-Moghaddam, C0DEED, http://abs.twimg.com/images/themes/theme1/bg.png, https://abs.twimg.com/images/themes/theme1/bg.png, False, https://pbs.twimg.com/profile_banners/37196329/1425896261, http://pbs.twimg.com/profile_images/1306244699716489216/BfQaxpEW_normal.jpg, https://pbs.twimg.com/profile_images/1306244699716489216/BfQaxpEW_normal.jpg, 1DA1F2, C0DEED, DDEEF6, 333333, True, False, iranhr, 11461, none, http://www.iranhr.net, True, None, []), None) \n", + "\n", + " tweet_text \\\n", + "0 your current sec college football qbr leaders.👀\\n\\n#sec #collegefootball #cfb #ncaaf https://t.co/ra3ekyetqu \n", + "1 latina baddie wanted to suck me off during a party😫 #collegebaddie #college #latinahead #latinaexposed #latinabeauty #sloppythroat #sloppyheadgiver #blowie https://t.co/ghg6abun99 \n", + "2 today’s peaceful student protests of #universityoftehran, college of engineering was attacked by basij and plainclothes security forces (who had illegally entered the campus). security forces waiting outside arresting and taking students away to undisclosed location #mahsa_amini \n", + "3 first 100 follows gets a surprise \\nopen dms\\n\\n#bj #pyt #baddie #leaked #oussy #backshots #sellingcontent #schoolthot #dm #head #throatgoat #bbc #sloppy #leaks #college #nsfw #ebony #pyteen https://t.co/xkfqqhgntn \n", + "4 today’s peaceful student protests of #universityoftehran, college of engineering was attacked by basij and plainclothes security forces (who had illegally entered the campus). security forces waiting outside arresting and taking students away to undisclosed location #mahsa_amini \n", + "\n", + " text \n", + "0 RT @JWPSports: Your current SEC College Football QBR leaders.👀\\n\\n#SEC #CollegeFootball #cfb #NCAAF https://t.co/ra3EkYetqu \n", + "1 RT @pxrnstachee: Latina baddie wanted to suck me off during a party😫 #collegebaddie #college #latinahead #latinaexposed #LatinaBeauty #slop… \n", + "2 RT @iranhr: Today’s peaceful student protests of #UniversityofTehran, College of Engineering was attacked by basij and plainclothes securit… \n", + "3 RT @freaky_central2: First 100 follows gets a surprise \\nOpen dms\\n\\n#bj #pyt #baddie #leaked #oussy #backshots #sellingcontent #schoolthot #d… \n", + "4 RT @iranhr: Today’s peaceful student protests of #UniversityofTehran, College of Engineering was attacked by basij and plainclothes securit… " + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_coords_analysis_df = twitter_df.select([\n", + " twitter_df.created_at,\n", + " twitter_df.id,\n", + " twitter_df.geo.coordinates.alias(\"geo_coordinates\"),\n", + " twitter_df.user['name'].alias(\"user_name\"), \n", + " twitter_df.user.followers_count.alias(\"followers_count\"), \n", + " twitter_df.user.verified.alias(\"verified_user\"),\n", + " twitter_df.user.location.alias(\"user_location\"),\n", + " twitter_df.user.description.alias(\"user_description\"),\n", + " twitter_df.retweeted_status.reply_count.alias(\"reply_count\"),\n", + " twitter_df.retweeted_status.retweet_count.alias(\"retweet_count\"),\n", + " twitter_df.retweeted_status.alias(\"retweeted_status\"),\n", + " twitter_df.tweet_text,\n", + " twitter_df.text,\n", + "])itter\n", + "\n", + "df_coords_analysis_df.limit(5).toPandas()" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "9d0845ed-b052-4f36-bbe8-b5931c90f187", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "#Taking the null count to check for any discrepancies\n", + "df_nuls_cnt = df_coords_analysis_df.select([\n", + " F.count(\n", + " F.when(df_coords_analysis_df[column].isNull(), column)\n", + " ).alias(column) for column in df_coords_analysis_df.columns\n", + " ]).toPandas()\n", + "\n", + "# display.max_columns : int" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "da2788bb-fc3c-4f2f-bd75-8f19939a3dd5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
created_atidgeo_coordinatesuser_namefollowers_countverified_useruser_locationuser_descriptionreply_countretweet_countretweeted_statustweet_texttext
00099758400045191523181035260835260835260800
\n", + "
" + ], + "text/plain": [ + " created_at id geo_coordinates user_name followers_count verified_user \\\n", + "0 0 0 997584 0 0 0 \n", + "\n", + " user_location user_description reply_count retweet_count \\\n", + "0 451915 231810 352608 352608 \n", + "\n", + " retweeted_status tweet_text text \n", + "0 352608 0 0 " + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_nuls_cnt" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "ef04a00c-97f1-4abf-92e0-7e90c7cf169b", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 240 ms, sys: 30.4 ms, total: 270 ms\n", + "Wall time: 3min 46s\n" + ] + } + ], + "source": [ + "%%time \n", + "df_coords_analysis_df.write.mode(\"overwrite\").parquet(\"gs://msca-bdp-students-bucket/shared_data/kishorkumarreddy/df_coords_analysis_df/\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d0c0339e-bc48-482a-9210-b6bb2fa54272", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Geographical Time Analysis.ipynb b/Geographical Time Analysis.ipynb new file mode 100644 index 0000000..b2003e2 --- /dev/null +++ b/Geographical Time Analysis.ipynb @@ -0,0 +1,1817 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "c61d0dc1-2245-4e76-b0dd-495c05422cf9", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import shutil\n", + "import pandas as pd\n", + "pd.set_option('display.max_colwidth', None)\n", + "from pyspark.sql.functions import *\n", + "from pyspark.sql.types import *\n", + "import numpy as np\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "913877d7-c600-43b9-85b5-d6f3d9f6db4b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: geopy in /opt/conda/miniconda3/lib/python3.8/site-packages (2.3.0)\n", + "Requirement already satisfied: geographiclib<3,>=1.52 in /opt/conda/miniconda3/lib/python3.8/site-packages (from geopy) (2.0)\n", + "\u001b[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001b[0m\u001b[33m\n", + "\u001b[0m" + ] + } + ], + "source": [ + "!pip install geopy\n", + "from geopy.geocoders import Nominatim\n", + "loc = Nominatim(user_agent=\"GetLoc\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "04efe6ce-d941-4a47-903f-16f164d65127", + "metadata": {}, + "outputs": [], + "source": [ + "from google.cloud import storage" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "43df640f-5664-441d-aa24-f988a4d1d743", + "metadata": {}, + "outputs": [], + "source": [ + "spark = SparkSession.builder.getOrCreate()\n", + "spark.conf.set(\"spark.sql.repl.eagerEval.enabled\",True) " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "69cc0cb2-d805-4873-b51c-3d804e3d7089", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "23/03/09 06:21:26 WARN org.apache.spark.sql.catalyst.util.package: Truncated the string representation of a plan since it was too large. This behavior can be adjusted by setting 'spark.sql.debug.maxToStringFields'.\n" + ] + } + ], + "source": [ + "#twt_df=spark.read.parquet('gs://msca-bdp-students-bucket/shared_data/kishorkumarreddy/filtered_files_for_analysis_1')\n", + "twt_df=spark.read.parquet('gs://msca-bdp-students-bucket/shared_data/kishorkumarreddy/filtered_data_for_analysis_1')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "dd37ce47-0f98-45cc-a5bc-971f00cbbfee", + "metadata": {}, + "outputs": [], + "source": [ + "twt_df.createOrReplaceTempView(\"twt_df\")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "498b13d6-1112-48a8-95bf-96c0703491f9", + "metadata": {}, + "outputs": [], + "source": [ + "query = '''\n", + "select created_at, coordinates.coordinates as cr,\n", + "user.screen_name as handle_name,\n", + "user.description as desc,\n", + "user.location as user_location,\n", + "user.verified as is_verified\n", + "from twt_df'''\n", + "tw_geo = spark.sql(query)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "e986a12f-2330-4ab6-83f4-7dc013435438", + "metadata": {}, + "outputs": [], + "source": [ + "tw_geo.createOrReplaceTempView(\"tw_geo\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "3db563bc-5064-415f-b357-4dc64ac06bc4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "
keyvalue
spark.sql.legacy....LEGACY
\n" + ], + "text/plain": [ + "+--------------------+------+\n", + "| key| value|\n", + "+--------------------+------+\n", + "|spark.sql.legacy....|LEGACY|\n", + "+--------------------+------+" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "spark.sql(\"set spark.sql.legacy.timeParserPolicy=LEGACY\")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "feac0a95-1d2a-4915-8e89-c9684aac2a05", + "metadata": {}, + "outputs": [], + "source": [ + "tw_geo_a = tw_geo.select(col(\"user_location\"),col(\"created_at\"),to_date(col(\"created_at\"),'EEE MMM d HH:mm:ss z yyyy').alias(\"date\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "5e8f16c0-92dd-4b4e-8e4b-537b0d6aece9", + "metadata": {}, + "outputs": [], + "source": [ + "tw_geo_a.createOrReplaceTempView(\"tw_geo_a\")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "68c28d87-3d5c-47a8-89ff-46012fc03a18", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
dateuser_locationcount(1)
02022-09-18India647
12022-05-16South Africa305
22022-11-03United Sates259
32022-05-16Johannesburg, South Africa244
42022-09-14Patna, India208
52022-09-18New Delhi, India202
62022-05-17South Africa200
72022-09-14Gaya, India185
82022-09-10Michigan, USA184
92022-10-02🗻181
\n", + "
" + ], + "text/plain": [ + " date user_location count(1)\n", + "0 2022-09-18 India 647\n", + "1 2022-05-16 South Africa 305\n", + "2 2022-11-03 United Sates 259\n", + "3 2022-05-16 Johannesburg, South Africa 244\n", + "4 2022-09-14 Patna, India 208\n", + "5 2022-09-18 New Delhi, India 202\n", + "6 2022-05-17 South Africa 200\n", + "7 2022-09-14 Gaya, India 185\n", + "8 2022-09-10 Michigan, USA 184\n", + "9 2022-10-02 🗻 181" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "spark.sql(\"select date, user_location, count(*) from tw_geo_a where user_location is not null group by date, user_location order by count(*) desc limit 10\").toPandas()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "105526bc-7317-4cbe-b3dd-1219310bb336", + "metadata": {}, + "outputs": [], + "source": [ + "tw_geo.createOrReplaceTempView(\"tw_geo\")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "30e8dfea-4240-4f0b-9c02-aadab4fafd74", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "td = spark.sql('select user_location,count(*) from tw_geo group by user_location order by count(*) desc limit 200').toPandas()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "5ff9994d-ffc6-4e94-b2b2-5e213242fb23", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_18805/3657135711.py:6: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " td['country'][i] = getLoc.address.split(',')[-1]\n" + ] + } + ], + "source": [ + "td['country'] = ''\n", + "for i in range(len(td)):\n", + " if td['user_location'][i] != None:\n", + " getLoc = loc.geocode(td['user_location'][i])\n", + " if getLoc != None:\n", + " td['country'][i] = getLoc.address.split(',')[-1]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "7dbe72ea-032a-4061-92e3-c64d09a04501", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_18805/1624457845.py:2: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " td['country'][i] = td['country'][i].lstrip()\n" + ] + } + ], + "source": [ + "for i in range(0,len(td)):\n", + " td['country'][i] = td['country'][i].lstrip()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "2164b86c-ed02-4f4c-bfb9-511261f16211", + "metadata": {}, + "outputs": [], + "source": [ + "df_country = td.groupby(['country']).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "2bcb52c2-a309-42f0-a15c-21aab919b9df", + "metadata": {}, + "outputs": [], + "source": [ + "df_country.reset_index(inplace=True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "7800029b-8c6e-4d64-a977-10c3594670ab", + "metadata": {}, + "outputs": [], + "source": [ + "df_country.drop([0],inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "4a058d1f-7ce8-4fa9-a428-d6199689b094", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_18805/905291699.py:7: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df_country['country_latitude'][i] = getLoc.latitude\n", + "/tmp/ipykernel_18805/905291699.py:8: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df_country['country_longitude'][i] = getLoc.longitude\n" + ] + } + ], + "source": [ + "df_country['country_latitude'] = 0.0\n", + "df_country['country_longitude'] = 0.0\n", + "for i in range(1,len(df_country)):\n", + " if df_country['country'][i] != None:\n", + " getLoc = loc.geocode(df_country['country'][i])\n", + " if getLoc != None:\n", + " df_country['country_latitude'][i] = getLoc.latitude\n", + " df_country['country_longitude'][i] = getLoc.longitude" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "a98f585d-06c4-45ea-b51d-8058dca5c708", + "metadata": {}, + "outputs": [], + "source": [ + "from shapely.geometry import Point\n", + "import geopandas as gpd\n", + "from geopandas import GeoDataFrame" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "11da920a-6974-415e-915d-6765708ee867", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "17779431-9bd2-4245-9106-eef3d9c125c4", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "ERROR 1: PROJ: proj_create_from_database: Open of /opt/conda/miniconda3/share/proj failed\n", + "No handles with labels found to put in legend.\n" + ] + }, + { + "data": { + "image/png": "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mddee41t27YREhLCpEmTqKioaMMeN09VVRX9+vXjtddeO+3t5zPW+++/n4ULF/Lll1+yfv16KisrmT59Ona7vbWG0SznGjvA1KlTG70Pfvzxx0a3d9SxdwRqC/0TrUumVXQRTz31FAAffvjhWY/z8fFplG36tc8++4za2lo+/PBDjEYjiYmJHDlyhJdffpkHH3wQRVFc3W2XONfYly1bxoEDBzhx4gRhYWEAvPTSS8ydO5dnn30Wb2/vDjv20/Hy8jrja3w+z0VH9PLLL3Prrbdy2223AfDKK6/w888/8+abb/L888+3ce9cR6fTnfa1VVWVV155hccff5zLL78cgI8++ojg4GA+//xz7rzzztbu6u8ybdo0pk2bdtrbzmesZWVlvP/++3zyySdcdNFFAHz66adERkbyyy+/MGXKlFYby4U629hPMRqNZ/wd78hjF6K1SOZYNDJv3jwCAgIYMmQIb731Fg6Hw3nbpk2bGDt2bKOC8lOmTCE7O5tjx461QW9dY9OmTSQmJjqDQagfV11dHTt27HAe01nG/o9//AN/f3/69+/Ps88+22jKxPk8Fx2NxWJhx44dTJ48udH1kydPZuPGjW3Uq5aRmppKWFgYsbGxzJ49m6NHjwKQkZFBbm5uo+fAaDQyduzYTvccnM9Yd+zYgdVqbXRMWFgYiYmJneL5WL16NUFBQXTv3p3bb7+d/Px8522dfextTTLHnYNkjoXTM888w8SJEzGZTKxYsYKHHnqIwsJC52n33NxcYmJiGt0nODjYeVtsbGxrd9klcnNzneM4xdfXF4PBQG5urvOYzjD2P/7xjwwcOBBfX1+2bt3KY489RkZGBu+99x5wfs9FR1NYWIjdbm8yruDg4A47ptMZNmwYH3/8Md27dycvL4+//e1vjBgxgv379zvHebrn4Pjx423R3RZzPmPNzc3FYDDg6+vb5JiO/p6YNm0aV111FdHR0WRkZPCXv/yFCRMmsGPHDoxGY6cee3vQEsGsBMetTzLHHdjpFuD89rJ9+/bzbu/Pf/4zycnJ9O/fn4ceeoinn36af/7zn42O+e30gVML0lp7WoGrx366/quq2uj69jL237qQ5+KBBx5g7Nix9O3bl9tuu4233nqL999/n6KiImd75/NcdESne/06+ph+bdq0aVxxxRUkJSVx0UUXsWTJEqB+SsEpnf05+LXm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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import geopandas as gpd\n", + "\n", + "# initialize an axis\n", + "fig, ax = plt.subplots(figsize=(8,6))\n", + "\n", + "# plot map on axis\n", + "countries = gpd.read_file(gpd.datasets.get_path(\"naturalearth_lowres\"))\n", + "countries.plot(color='lightblue', alpha=0.5, edgecolor='black', ax=ax)\n", + "\n", + "# plot points\n", + "df_country.plot(x=\"country_longitude\", y=\"country_latitude\", kind=\"scatter\", \n", + " c=\"count(1)\", colormap=\"magma\", alpha=0.7,\n", + " ax=ax)\n", + "\n", + "# add grid\n", + "ax.grid(b=True, alpha=0.5)\n", + "\n", + "# set title and legend\n", + "plt.xlabel('latitude')\n", + "plt.ylabel('longitude')\n", + "plt.title('Count of Twitterers by Country')\n", + "plt.legend(loc=2, prop={'size': 6})\n", + "\n", + "# show plot\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "31b56ef3-f3c5-4dba-91a4-96df36fad12b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
countrycount(1)country_latitudecountry_longitude
1Africa34211.50243417.757812
2Australia2027-24.776109134.755000
3Canada766561.066692-107.991707
4Deutschland43551.16381810.447831
5España42939.326068-4.837979
6France206346.6033541.888334
7Ghana11468.030028-1.080027
8India3276222.35111578.667743
9Italia53442.63842612.674297
10Kenya14651.44196838.431398
11Nigeria30259.6000367.999972
12Philippines35412.750349122.731210
13Singapore3551.357107103.819499
14South Africa3889-28.81662424.991639
15Uganda14761.53335532.216658
16United Kingdom2627054.702354-3.276575
17United States10469639.783730-100.445882
18Warszawa74352.23195821.006725
19Éire / Ireland129652.865196-7.979460
20Ōu36351.00000010.000000
21الإمارات العربية المتحدة41824.00024953.999483
22ایران36432.64753154.564352
23پاکستان424330.33084071.247499
24বাংলাদেশ48624.47692990.293441
25ශ්‍රී ලංකාව இலங்கை3357.55549480.713785
26ประเทศไทย20930.0000000.000000
\n", + "
" + ], + "text/plain": [ + " country count(1) country_latitude country_longitude\n", + "1 Africa 342 11.502434 17.757812\n", + "2 Australia 2027 -24.776109 134.755000\n", + "3 Canada 7665 61.066692 -107.991707\n", + "4 Deutschland 435 51.163818 10.447831\n", + "5 España 429 39.326068 -4.837979\n", + "6 France 2063 46.603354 1.888334\n", + "7 Ghana 1146 8.030028 -1.080027\n", + "8 India 32762 22.351115 78.667743\n", + "9 Italia 534 42.638426 12.674297\n", + "10 Kenya 1465 1.441968 38.431398\n", + "11 Nigeria 3025 9.600036 7.999972\n", + "12 Philippines 354 12.750349 122.731210\n", + "13 Singapore 355 1.357107 103.819499\n", + "14 South Africa 3889 -28.816624 24.991639\n", + "15 Uganda 1476 1.533355 32.216658\n", + "16 United Kingdom 26270 54.702354 -3.276575\n", + "17 United States 104696 39.783730 -100.445882\n", + "18 Warszawa 743 52.231958 21.006725\n", + "19 Éire / Ireland 1296 52.865196 -7.979460\n", + "20 Ōu 363 51.000000 10.000000\n", + "21 الإمارات العربية المتحدة 418 24.000249 53.999483\n", + "22 ایران 364 32.647531 54.564352\n", + "23 پاکستان 4243 30.330840 71.247499\n", + "24 বাংলাদেশ 486 24.476929 90.293441\n", + "25 ශ්‍රී ලංකාව இலங்கை 335 7.555494 80.713785\n", + "26 ประเทศไทย 2093 0.000000 0.000000" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_country" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "a7161b60-44eb-40d2-8262-05d2cdef7616", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "No handles with labels found to put in legend.\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 2476 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 2494 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 2434 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 2482 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 2470 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 2503 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 2486 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 3521 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 3530 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 3515 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 3539 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 3517 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 3458 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 3482 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 3535 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 3520 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 2951 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 2994 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 2969 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 3021 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 2965 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 3016 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 3611 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 3619 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 3632 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 3648 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 3607 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 3624 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 3652 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 3618 missing from current font.\n", + " font.set_text(s, 0.0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 2476 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 2494 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 2434 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 2482 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 2470 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 2503 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 2486 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 3521 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 3530 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 3515 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 3539 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 3517 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 3458 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 3482 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 3535 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 3520 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 2951 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 2994 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 2969 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 3021 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 2965 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 3016 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 3611 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 3619 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 3632 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 3648 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 3607 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 3624 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 3652 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n", + "/opt/conda/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:203: RuntimeWarning: Glyph 3618 missing from current font.\n", + " font.set_text(s, 0, flags=flags)\n" + ] + }, + { + "data": { + "image/png": "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z/Tp03nsscewWq2kpaWxatUq3nnnnaMa08Ec7r0+GnfffTfXXHMNkiSxaNGi4x6HIByXE1EiLBLHJ50IjoVz1i233MK4cePCS0k1NTWhVqvJycnh2muv7ZeRe/rpp8nKyuLZZ5/lqaeewmKxMHv2bB577LF+mclrr72WhoYGnnnmGZ577jmGDh3K008/fdAlxY7W3Xffze7du/nNb36D3W5HluUD1rr9tqMd60BSKBRMnTqVd999t18QPHHiRIxGIy6XK5xtPJzDHeuzzz7LL37xC+bNm4fH42HBggU8//zz5Ofns3XrVh566CF++9vf0tLSQmRkJNnZ2eG64yO5/vrrSU1NZenSpdx22210d3cTFxfHyJEjD7pu9XfFx8eTlZXFP/7xD2pra5EkiczMTP785z9z5513HvH5arWaDz/8kLvuuouHH34YvV7PLbfcwh//+MeDtr/mmmv45JNPjqmeVqfT8dFHH/HKK6/wwgsvcNttt+FwOLBarYwZM4b//Oc/4clysbGxrFu3jl//+tf8+te/xuFwkJmZydKlS7nnnnv69fvSSy9x5513ct999xEIBLj00kv573//e8gvcEfjUO/10Zg/fz5arZYLL7yQ7Ozs4x6DIAjnLkk+3F9ZQRAE4bRzxRVXsGHDBqqqqlCr1ad6OKeVZcuWMW/ePD766KOj/nIkCN+Xw+HAYrHQ+cYfMRv0A9u304X16l9gt9vDy1UKJ5bIHAuCIJwBPB4PW7duZdOmTbz77rs88cQTIjD+lj179lBdXc29997LyJEjD7vusyAIwuGICXmCIAhngMbGRiZNmsTvf/97brvttqMq1ziXLFq0iHnz5mG1Wvnvf/87oOs+C8JRC8on5naU/H4/v/3tb8nIyECv15OZmcmDDz7Yb911WZZZsmQJiYmJ6PV6pk6dyu7du/v14/F4uPPOO4mJicFoNDJv3jzq6ur6tens7OSGG27AYrFgsVi44YYbDtgRtKamhksvvRSj0UhMTAx33XXXQSfBn25E5lgQBOEMkJ6eftha83PdmjVrTvUQBAFZHviV146lv8cff5xnnnmGF154gSFDhrB582ZuvPFGLBYLd999NwBLly7liSee4PnnnycnJ4eHH36YGTNmUFxcjMlkAmDx4sUsW7aM1157jejoaO69917mzp3Lli1bUCqVQGiOTV1dXXjL91tv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g8REb2XFoKBUjhxpZcSIpWel1dvaWklz80Gys5OZPXsMI0aMICQkhJKSEhoaGmhoyO/f1mLpprGxmNbWKrq6GtFofMjKmvGdF64RRTft7XW0tVVTWroLnS6EiRMXnTbcp7OzGUly095eg9Npw2AIwNc39DtJKDabW3G5nPj5hVJauova2nxMplYEwcDo0VcRGZmARqPDbrdhMJx7jorV2svRoweOKYQcwWj0JyjImwxss/VSVraVjAxfLr10Yb9yil6vx+lsZ9asGRgMPj/6ge4gg/wQXDTG8apVq067XhAEHn30UR599NHvp0ODnBe8UkPS965UcTbYbG4++ujoKdc/++ze/n9PmHAJ//53CbW1Em1tO3n++e3odN6PZVNTL88/nwd4PUH793/K228fOCHWWZIUJCePY+vWNjZvbmLHjg9oby8hJycRX99A/P31GAxDcDot+Ptr+de/3iItLZZ582YRGXlyTVhBEAgIGOjJFkWRxsbGn0wVLEEQ0Go1hIUleZUNHF6NWAmJZ559BKfThdEYhFKp5rPPfJgwYRgGgz9KpYKSknb8/VMpKdlOfr6eMWOSue22D5DJZDz44CMoFGr+85+PWbnyj6xd+z8aGxvZuzefgACvTvCRI+tJSDixgpnTaWfDhnZuuWU511+/DJ1OjUKhICMjgw8++BSlUkZzcxlKpZPq6m7Kyw8TGJiKn188brfzjMZxV1cjXV2HWLZsKhMnTiA0NJT169fzySefUVDQhVKpRqM5/pv57LO/4XaDRuOP0RhJT087mze/gdEYwLBhc4mJyTrv9wVgzZp/0N3djiAo0OtDGDHizCWlk5KyaWgo5tChzYAIiBgMvmRkTCY+fhgq1fkxFpuby9i48VVAduw4Cvz8YklKmkpKyvABAx+D4ZvNeH3xxWvYbC0Igvd3OmWKV3a0p6ed6uodjB0by803ryAw8LhqSFFRES6XHyUlNSxffiUANTU1REdHXxgxtz9xBtUqfhxcNMbxID9Ouru7cbsFlErND92Vb43R6M/IkTNZvbqI5uYyEhO9CXf19UV0dnorrlVVHcBqtRMXN56oqOQBhoCfXxAORw8lJVuRpC7S03248cafUVpaxb599SiVAomJWsaOHUNGRjoJCQn9cms/ZXp7ezl06BAKhaJfYUav12MwGHC7vbJl1dV1+AdEMHlKKmp1M319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zT333MNHH33EqlWr2LlzJxaLhUsuuQSP57hO+rJlyzh8+DBr165l7dq1HD58mOuvv75/vcfjYcGCBfT19bFz505WrVrFBx98wH333fe9XItvw0XjOf4qkiRx7733MnHiRIYMOT5VPm/ePK688kpiY2Oprq7m//2//8f06dM5cODAABH8r+JwOHA4jhtTPT1enU2PxzPgR/BjxePxIIriRXeuI0aMwGQysXdvNYWFjezevZsrrpjPmjVbKC3dTEbGDOTyU4vfC4KETCZj2rTL6eycSG3tBubPn39ersO0adNoamph587DTJw4nJSUFN566z2MRl+uvvqqH/xaX0z3XBRFSkpKkCQfgoKi2LjxvyiVbnJylhAXl4YoikiSSGhoDKLoYdWqx2lpOcz775cwfPg8Ro2a0a/XC/R7m73/Pz2xsUMIDo6kuvogQUHhpKRkn7Ik89kgl8uQy2VndeyAgDDa20P58MPV/OpXtzNv3njeeWcbkZEp36iMuo+PH3a7jIKCYrq7G0lIiCMoKBiz2YzD4aa7uweTqYtbbrmK3t5eWlpaqaysp729CZmsjbS0OCIi9AhCJYIgEBioQaNRUVy8hfj4aYiigNncjp9fNLW1+QwZMhU/vxOTGSVRwtlswtnYjeTyoAz2QR0TiEwz8FmVywXCwuIJC4tHkkSKiraiUqmQy7WASF9f17HiKVXU1xfQ3t6OWi0wcuQCBEFi//6PcDjcTJy49Jzu+blitfbQ3JzLokWjcblcPPnkSnx8NDz22IVR6vlietbPBxfCef7QnuMnn3yS6OjoAeGlXy17L0kSzz77LA8//DCXX345AG+88QahoaG888473HbbbZjNZl599VX+85//MHPmTADeeustoqOj2bhxI3PmzKGkpIS1a9eyd+9exozxKka98sorjBs3jtLSUlJTU1m/fj3FxcXU19f3F8L6+9//zooVK3j88ce/E23v84UgSRdf7ZU77riD1atXs3PnzgEu/q/T3NxMbGwsq1at6v8RfJ1HH32UP/zhDycsz8vLw2A4c4zfxY4oinR1dREQEPCDVJL7NnR3d3PkSCHNzWZ8fFRkZCQRFBTEvn0H6OpyERgYi0Jx8kGRIEjo9R76+uT09HShUHQze/a085ZI82WWuE6nw+l0sm3bTux2N9OnT8DH5/wkeH2bvl0M91ySJI4ePUpxcQ1y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pTFp0qRTus7Y5/Px3HMv8Omn+4mOPosJE87Dao2iru4AixdP4Re/eIQrrrh8VKeUHEkF8nJzc/n73//ep6T9008/zR//+Ef+8pe/kJubS0xMDOeeey6dnV8Xobr33nt57733ePPNN9m0aRMul4sLL7ywV3rAa6+9lr1797J69WpWr17N3r17ueGGG3quD4VCXHDBBXR1dbFp0ybefPNN3nnnHR544IEBjmjoyMsqZLIh1tbWxhdfrAcsPeuMdToDdnt6T5AMUFNTQEqKkttvv5OwsDCioqKGqccymUwG+fn57NxZQihkwOdz09HRQE3NAWJiYNmypaMmI8XpwOVycd111/HCCy/w61//uudySZJ45plnePTRR7nssssA+Ne//kV0dDSvv/46P/jBD3A4HLz44ou88sornHPOOQC8+uqrJCYm8sUXX3DeeedRUFDA6tWr2bZtG7NmzQLghRdeYM6cORQVFZGZmcmaNWvIz8+nurqauLg4AP7whz9w880385vf/GZEn2E4bWaOU1JSEASh189Pf/rTXsecrtP3stFl7dq1FBRU43I1095eh9PZhsvV0Ge9sUqlpqnJyY4dO6itrUWSd2XIZLJhlJGRweWXL2Tp0jQCgTw6OrYxfbqNe+65jYSEhOHu3oggnqIf6C788s0fn8931H7cddddXHDBBT3B7RHl5eU0NDSwdOnSnsu0Wi0LFixgy5YtAOzatYtAINDrmLi4OCZMmNBzzNatW7FarT2BMcDs2bOxWq29jpkwYUJPYAxw3nnn4fP52LVr13H/lsPptJo5/tWvfsXtt9/e87vJ9PUs25Hp+8jISDZt2kRrays33XQTkiTx5z//eTi6K5P1a968eWzfvpvWVg9qtY4dO75AqRTJyJjV67jExAk0NRl5++0d7NlTQHZ2NhpN/0VCZDKZ7FQzmUxcdVV3Fc/W1lZ8Ph9RUVGoVKdVKHHaSkxM7PX7L3/5Sx577LE+x7355pvs3r2b3NzcPtc1NDQAEB0d3evy6OhoKisre47RaDTY7fY+xxy5fUNDQ79nM6Oionod8+37sdvtaDSanmNGqtPqGW02m4mJien3utN5+l42uuzbt4/S0k4mT74MlUpLR0cjFktEryUVAKFQkLa2akwmmDFjohwYy0Ysj8fDwYMHiYuLk4OlUUIuQjT0qqure8Uy/W3Orq6u5p57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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#We can annotate the graph to give the labels to the countries\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import geopandas as gpd\n", + "\n", + "# initialize an axis\n", + "fig, ax = plt.subplots(figsize=(8,6))\n", + "\n", + "# plot map on axis\n", + "countries = gpd.read_file(gpd.datasets.get_path(\"naturalearth_lowres\"))\n", + "countries.plot(color='navy', alpha=0.5, edgecolor='black', ax=ax)\n", + "\n", + "# plot points\n", + "df_country.plot(x=\"country_longitude\", y=\"country_latitude\", kind=\"scatter\", \n", + " c=\"count(1)\", colormap=\"magma\", alpha=0.7,\n", + " ax=ax)\n", + "\n", + "# add labels to points\n", + "for i, row in df_country.iterrows():\n", + " ax.annotate(row[\"country\"], xy=(row[\"country_longitude\"], row[\"country_latitude\"]), \n", + " xytext=(5, 5), textcoords=\"offset points\", color=\"white\", fontsize=8)\n", + "\n", + "# add grid\n", + "ax.grid(b=True, alpha=0.5)\n", + "\n", + "plt.xlabel('latitude')\n", + "plt.ylabel('longitude')\n", + "plt.title('Count of Twitterers by Country')\n", + "plt.legend(loc=2, prop={'size': 6})\n", + "\n", + "# show plot\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "4002ce45-df5b-44ad-bb30-55e04b37fd1a", + "metadata": {}, + "outputs": [], + "source": [ + "df_cont = df_country.sort_values(by=['count(1)'], ascending=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "96963b20-9cf5-4ce6-b399-62f5f7498e74", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
countrycount(1)country_latitudecountry_longitude
17United States10469639.783730-100.445882
8India3276222.35111578.667743
16United Kingdom2627054.702354-3.276575
3Canada766561.066692-107.991707
23پاکستان424330.33084071.247499
\n", + "
" + ], + "text/plain": [ + " country count(1) country_latitude country_longitude\n", + "17 United States 104696 39.783730 -100.445882\n", + "8 India 32762 22.351115 78.667743\n", + "16 United Kingdom 26270 54.702354 -3.276575\n", + "3 Canada 7665 61.066692 -107.991707\n", + "23 پاکستان 4243 30.330840 71.247499" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "c = df_cont.head(5)\n", + "c" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "32700ff9-70c6-417a-bccb-617feeaf1667", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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8PPt27fRr18/dOjQASNGjMCTJ0+02iARERER/afC4W3z5s3Izs4Wfv7iiy8gl8sxZswY3Lx5E+vXr9dqg0RERET0nwqHt3v37sHKygrAs12lv//+O2bNmoV58+ZhxowZ+PXXX7XeJBERERE9U+Hwlp2dDQMDAwDA+fPnkZeXB3d3dwCApaUlUlJStNshEREREQkqHN5MTExw9epVAMCJEydgbm4OY2NjAMCTJ0+gr6+v3Q6JiIiISFCrog/o06cPQkNDcebMGcTExGDixInCvGvXrsHMzEyrDRIRERHRfyoc3qZPn46srCycPXsWXl5emDBhgjDv+PHjcHNz02qDRERERPSfCoc3fX19BAUFlThvz549VW6IiIiIiEpX4WPexowZg4SEhBLnJSYmYsyYMVVuioiIiIhKVuHw9ueffyIrK6vEeVlZWThz5kyVmyIiIiKikmn13qapqak825SIiIioGml0zNsvv/yicvHdtWvXokGDBio1ubm5+PPPP2Fra6vdDomIiIhIoFF4S0hIwNGjRwEAEokEp06dgkQiUamRSqWwtrbG/Pnztd8lEREREQHQMLxNnjwZkydPBgC88cYb2Lp1KxwcHKq1MSIiIiJSV+FLhfzzzz/V0QcRERERaaDC4U3pxIkT+PPPP5GWlgZ/f380b94cFy5cQIsWLYTbZRERERGRdlU4vGVnZ8Pf3x8nT54UjnsbPnw4mjdvjq+++grNmjXDnDlztN4oEREREVXiUiGhoaG4dOkSwsPD8ddff0GhUAjzunTpgtjYWK02SERERET/qfDI29GjRzF9+nT07t0bhYWFKvOaN2+O5ORkrTVHRERERKoqPPL2+PFjWFpalrwwHR3k5ORUuSkiIiIiKlmFw1uTJk1w/fr1Euddu3YNLVq0qHJTRERERFSyCoe3Pn36YP369bhy5YowTSKRICkpCV9//TXeeustrTZIRERERP+p8DFvAQEBOHnyJIYMGQIrKytIJBLMmzcPd+7cgbm5OSZNmlQdfRIRERERKjHyZmhoiF27dmH69OkwMDCAmZkZ6tSpg8mTJ2PHjh28MT0RERFRNarURXr19fUxadIkjrIRERERvWCVvsNCRkYGzp07h7S0NHh4eKBevXra7IuIiIiISlCp8LZmzRps3LgROTk5kEgk2Lt3L+rVq4exY8eiS5cuHJEjIiIiqiYV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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#sns.barplot(data=c, x=\"country\", y=\"count(1)\")\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# set the style and color palette\n", + "sns.set(style=\"whitegrid\", palette=\"muted\")\n", + "\n", + "# create the barplot\n", + "ax = sns.barplot(data=c,x='country', y='count(1)')\n", + "\n", + "# customize the plot\n", + "plt.title(\"Country-wise Distribution of Tweets\")\n", + "plt.xlabel(\"County\")\n", + "plt.ylabel(\"Count of Tweets\")\n", + "plt.ylim([0, 110000])\n", + "plt.xticks(rotation=0)\n", + "plt.tight_layout()\n", + "\n", + "# show the plot\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "8c04c286-0b0a-4f6c-b12d-22cf6c7e9ff4", + "metadata": {}, + "source": [ + "### What are the timelines of these tweets? Do you see significant peaks and valleys?" + ] + }, + { + "cell_type": "markdown", + "id": "70211e45-721a-4712-ab5b-c5a39e4cebcf", + "metadata": {}, + "source": [ + "#### Do you see any data collection gaps?\n", + "#### Plot the timelines of these tweets" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "de79ff6f-fda6-42b2-9f47-c275961a61fe", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/bin/sh: 1: break!: not found\n" + ] + } + ], + "source": [ + "!break!" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "352f6ff9-29d4-486d-b8aa-cf4cbec678be", + "metadata": {}, + "outputs": [], + "source": [ + "#To address these questions, we perform a time analysis. Plot a timeline graph to see the spread of the tweets" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "df83feb4-d2b2-4a2a-b980-ec6228f5c24e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+-------------------+--------------------+\n", + "| id| created_at|\n", + "+-------------------+--------------------+\n", + "|1586426715760459778|Sat Oct 29 18:36:...|\n", + "|1586426719090589696|Sat Oct 29 18:36:...|\n", + "|1586426871524343814|Sat Oct 29 18:36:...|\n", + "|1586427143302443008|Sat Oct 29 18:38:...|\n", + "|1586427325264310273|Sat Oct 29 18:38:...|\n", + "+-------------------+--------------------+\n", + "only showing top 5 rows\n", + "\n" + ] + } + ], + "source": [ + "timeline_df = twt_df.select('id','created_at')\n", + "timeline_df.show(5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d8af595b-4ca0-4956-99b0-7f0cc7e02076", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Stage 8:======================================================>(207 + 3) / 210]\r" + ] + } + ], + "source": [ + "df_timelines_pd = timeline_df.groupby('created_at').agg(count('id').alias(\"count_id\")).toPandas()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8bbe2c78-cd4b-4a19-8268-d8884a9db0c8", + "metadata": {}, + "outputs": [], + "source": [ + "df_timelines_pd.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "de8e8b97-ea24-4362-a074-1b4164d823d4", + "metadata": {}, + "outputs": [], + "source": [ + "df_timelines_pd['created_at'] = pd.to_datetime(df_timelines_pd['created_at'])\n", + "df_timelines_pd['year'] = df_timelines_pd['created_at'].dt.year\n", + "df_timelines_pd['month'] = df_timelines_pd['created_at'].dt.month\n", + "df_timelines_pd['dayCode'] = df_timelines_pd['created_at'].dt.dayofweek" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "79c04455-966b-43ca-9d9a-38b13c104158", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
created_atcount_idyearmonthdayCode
02022-08-03 07:31:30+00:001202282
12022-12-20 22:00:06+00:0012022121
22022-08-30 16:30:24+00:002202281
32022-11-24 07:13:50+00:0012022113
42022-12-16 14:06:12+00:0012022124
\n", + "
" + ], + "text/plain": [ + " created_at count_id year month dayCode\n", + "0 2022-08-03 07:31:30+00:00 1 2022 8 2\n", + "1 2022-12-20 22:00:06+00:00 1 2022 12 1\n", + "2 2022-08-30 16:30:24+00:00 2 2022 8 1\n", + "3 2022-11-24 07:13:50+00:00 1 2022 11 3\n", + "4 2022-12-16 14:06:12+00:00 1 2022 12 4" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_timelines_pd.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b8ab3eb6-ba97-43f5-99ee-37bb566f8cc1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "month\n", + "1 98188\n", + "2 22052\n", + "4 76453\n", + "5 100171\n", + "6 83300\n", + "Name: count_id, dtype: int64" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# group by the 'fruit' column and sum the 'quantity' column\n", + "result_m = df_timelines_pd.groupby('month')['count_id'].count()\n", + "\n", + "# print the result\n", + "result_m.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "da215e8e-4289-48ee-8b23-e0506743deb7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"\\nimport pandas as pd\\nimport matplotlib.pyplot as plt\\n\\n#result_m.plot(x='month', y='count_id', kind='bar')\\nresult_m.plot(x='month', y='count_id', kind='line')\\nplt.show()\\n\"" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"\"\"\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "#result_m.plot(x='month', y='count_id', kind='bar')\n", + "result_m.plot(x='month', y='count_id', kind='line')\n", + "plt.show()\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "169943a1-0684-4347-9294-1a484b8b5dd1", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9AAAAJACAYAAABlv44fAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAADFJklEQVR4nOzdd1hT59sH8G/YICJDRcSB4F511L3qtnXU3eJ4W1tHHdVatRWs2uHosONXrVhn6xbr3nu2bnEPBKsgKspUZAXI+8fTkIScQJgnkO/nunL5nPEkN/EQcp9nKVQqlQpERERERERElC0LuQMgIiIiIiIiKg6YQBMREREREREZgQk0ERERERERkRGYQBMREREREREZgQk0ERERERERkRGYQBMREREREREZgQk0ERERERERkRGYQBMREREREREZgQk0ERERERERkRGs5A6AiOQ1ffp0bNu2TW//6tWr0aJFCxkikl+nTp0QERGht//u3bt6+xYuXIhFixbp7Z8/fz769+9fKPFR8fbo0SN07txZb3/z5s2xZs0aGSLKv5L4M5Hp4XVGRYF/1yknTKCJTJihRC6/JkyYgI8//rjAn5coOyqVCp06dcLjx48ljzs7O+P06dOwtrYu4siIiExLTn//v//+e7z99ts5Pk9iYiLatWuHhIQEg+ccOXIElSpVylOcROaIXbiJiKhIXLhwwWDyDABxcXE4efJkEUZEREVt4cKFqFWrlt5j69atcodWrGzYsMGo83bs2JFt8lxSderUSfI6IyoITKCJiKhI7Ny5s0DOISIyd0FBQbhz506O5xmbaBOR8diFm8jMffTRRxg4cKDeft6pNc6AAQPQqlUrvf3VqlWTIRrTlZqaigMHDuR43rFjx5CQkABHR8ciiIoKSvny5bFu3Tq9/aVLl5YhGiLzsH79enz99dcGj1+8eFFy7g4iyh8m0EQm7H//+x9SUlIMHp8zZw5u376tt79///4YMGCAwXoVK1bMLHt5ecHLyytfcZqzihUr6ryfJO3o0aN48eJFjuelpKRg//79kjd1yHTZ2Njg9ddflzsMIrOya9cufPbZZwZvOLL1mahwMIEmMmENGjTI9rih1p2KFSvyyyyZlNx0zd65cycTaCKiHCQmJmLHjh0YOnSo3rHo6Gijev0QUe4xgSYyc7lZxurcuXP4v//7P71z+/Xrh2+/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VBQSEhJgZ2cHZ2dn1KhRA82bN0fv3r1NZtmqvn37om7duli/fj0uXbqEx48f49WrV5JzERQVU/n8o/xRqOS8ioiIiCjXoqKi0K5dO73x5j///DPeeustmaIiIiIq+diFm4iIqJhZs2aNXvLs7Oycq67yRERElHvswk1ERGTCUlNTce3aNQBAfHw8zp49K7me8IABA2SbsIeIiMhcsAs3ERGRCXv06FGOM686ODjg0KFDsk7aQ0REZA7YhZuIiKiYmzJlCpNnIiKiIsAEmoiIqBgbMWIEhg0bJncYREREZoFjoImIiIoRKysruLi4oHHjxhgyZAhatWold0hERERmg2OgiYiIiIiIiIzALtxERERERERERmACTURERERERGQEJtBERERERERERmACTURERERERGQEJtBERERERERERmACTURERERERGQEJtBERERERERERmACTURERERERGQEJtBERERERERERmACTURERERERGQEJtBERERERERERmACTURERERERGQEJtBERERERERERmACTURERERERGQEJtBERERERERERmACTURERERERGQEJtBERERERERERmACTURERERERGQEK7kDoOIvKCgIKpUK1tbWcodCRERERESUa0qlEgqFAo0bN872PLZAU76pVCqoVCq5w6BsqFQqpKam8v+JJPH6IEN4bVB2eH1Qdnh9kCGmem0Ym9OwBZryTd3y3KBBA5kjIUMSExNx+/ZtVK9eHQ4ODnKHQyaG1wcZwmuDssPrg7LD64MMMdVr4/r160adxxZoIiIiIiIiIiMwgSYiIiIiIiIyAhNoIiIiIiIiIiMwgSYiIiIiIiIyAhNoIiIiIiIiIiMwgSYiIiIiIiIyAhNoIiIiIiIiIiMwgSYiIiIiIiIyAhNoIiIiIiIiIiMwgSYiIiIiIiIyAhNoIiIiIiIiIiMwgSYiIiIiKgBKpdwREFFhs5I7ACIiIiKi4iohAVCpgA0bgIcPgapVgSFDxDFHR3ljI6KCxwSaiIiIiCgPkpKA774DFiwAkpM1+ydNAqZOBfz9AXt7+eIjooLHBJqIiIiIKJcSEkTyPGeO/rHkZLFfoQA++4wt0UQlCcdAExERERHlkkoF/PBD9ufkdJyIih8m0EREREREubRhA5CSkv05ycnA+vVFEw8RFQ124SYiIiIiygWlUkwYZoyw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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "# group by the 'month' column and sum the 'count_id' column\n", + "result_m = df_timelines_pd.groupby('month')['count_id'].sum()\n", + "\n", + "# set seaborn style and plot the counts by month\n", + "sns.set(style='whitegrid', font_scale=1.2, rc={'figure.figsize':(10,6)})\n", + "sns.lineplot(x=result_m.index, y=result_m.values, color='blue', linewidth=2, marker='o', markersize=8)\n", + "\n", + "# add labels and formatting\n", + "plt.title('Timeline Analysis over the Months', fontsize=24, fontweight='bold', pad=20)\n", + "plt.xlabel('Month', fontsize=18, labelpad=10)\n", + "plt.ylabel('Count', fontsize=18, labelpad=10)\n", + "plt.xticks(fontsize=16)\n", + "plt.yticks(fontsize=16)\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8358e374-3654-4736-bdfc-6e616083f25c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "year\n", + "2022 851826\n", + "2023 120240\n", + "Name: count_id, dtype: int64" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# group by the 'fruit' column and sum the 'quantity' column\n", + "result = df_timelines_pd.groupby('year')['count_id'].count()\n", + "\n", + "# print the result\n", + "result.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "517d353d-72ec-4deb-a4f5-212b82452a32", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4YAAAJNCAYAAABtK2vOAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB/ZElEQVR4nOzde1iUdf7/8ddwBs+uAspSpgaKSEGgkFmmradQDKLVFPPYZuhuWm1m7uqWW/k1k35Kprse8RBZgtnJNa3NNhUhU0nwUFJBihqiICAH5/dH10yOgOEIDjbPx3V1BZ/7PZ95z4068+L+3PdtMBqNRgEAAAAA7JaDrRsAAAAAANgWwRAAAAAA7BzBEAAAAADsHMEQAAAAAOwcwRAAAAAA7BzBEAAAAADsHMEQAAAAAOwcwRAAAAAA7BzBEAAAAADsHMEQAFAn/v7+iouLs3UbV5Sbmyt/f39Nnz7dYnz69Ony9/dXbm6uTfpauHCh/P39tXv3bovxxrBPbb1v6svp06f17LPP6p577lHXrl3l7++vc+fOWT1fbX+WAOC3imAIAL9i8uTJ8vf318qVK2ut2b9/v7p166a+ffuquLj4+jWH6yIuLk7+/v62bsMqtYXS35pnn31WKSkpCg0N1aRJkzR58mS5urpe8TGNIZjX5rcQ2H8LrwGwJ062bgAAGrsXXnhBX331lebPn6+IiIhqAaG0tFRPP/20Ll68qP/7v/9T06ZNbdRpw/rggw/k7u5u6zasMm3aNE2cOFFeXl42ef6RI0dq8ODBat++vU2e/0psvW/qQ3l5uT7//HPdeeedmj9/vq3bAYAbEkcMAeBXtGrVSi+99JIqKir01FNPqby83GL7yy+/rJycHD366KMKDQ21UZcNr1OnTo0y2NSFp6enOnXqJGdnZ5s8f+vWrdWpU6dGGaxtvW/qw+nTp3Xx4kV5enrauhUAuGERDAGgDnr37q1Ro0bp8OHDFkck/vvf/+rNN99Ut27dNHnyZFVWVmrt2rV66KGHFBISottuu03Dhg3TmjVrdPHixWrzbty4UVOmTFG/fv0UFBSkkJAQDR8+XKmpqTX2YVrSWF5ertdee039+/dXYGDgFc+D2rFjh/z9/bVgwQKL8c8//1z+/v7y9/fX8ePHLbb95S9/kb+/v3744QfzWE3L7oqKirRo0SLdf//9Cg4OVnBwsPr27as///nPyszMrNbLvn379Oc//1m9evVSYGCg7rnnHv39739Xfn5+rf3XpLi4WC+99JLuvvtude/eXQMHDtTy5ctlNBprrK9tSdvWrVsVFxdn7qdXr14aMWKE1q5dK+mX88zS0tLM+8D036X7om/fvurbt6+Kioo0Z84c3XvvverWrZsWLlwo6deXc+bn5+vpp59WRESEgoKCFB0drc2bN1er27hxo/z9/bVx48Ya56mpr0WLFkmSRo8ebdH/r+0b6eejxA8//LDuuOMOBQUFKTIyUm+88YYuXLhQrda0D0pLSzV37lz16dNHgYGB+sMf/qClS5fW+rOpzbFjx/T000/rrrvuUmBgoO666y49/fTTOnbsWLXnvffeeyVJKSkp5td3pb8Tpv0oSWlpaRb7xfQzu1Rubq6mTp2qnj17qnv37oqOjta2bdtqnf+9995TXFycwsLC1L17dw0aNEivv/56tV8q1cbf318pKSmSpH79+pl769u3r6Sfj/L6+/vru+++s3jck08+KX9/fz3yyCMW48XFxerWrZtGjhx5zb1+8803mj59uu655x4FBgbqzjvv1JNPPqlvv/32ql6DJH333Xd67rnndN9996l79+4KCwvToEGD9Pe//11nzpyp074CUH9YSgoAdfT0009r586dWrVqlfr06SN/f3/NmDFD7u7ueuWVVyRJf/rTn/T555+rY8eOioyMlKurq3bv3m1ejmqqM5k9e7Y6d+6ssLAwtW3bVmfOnNGnn36qZ555Rt9++62mTZtWYy9TpkxRZmam7r77bvXr109t2rSpte/Q0FA5Oztr165dFuOXfr9z505FR0dLkoxGo9LS0uTj4yNfX99a5zUajZowYYK++uorBQcH66GHHpKjo6NOnDihtLQ0ffXVVwoMDDTXv/POO/rb3/4mV1dX9e3bV15eXvruu++0YcMGbd++XW+99VadjkiWl5drzJgxOnDggLp06aIhQ4aoqKhIixcvNge4uli3bp3+8Y9/qG3bturbt69atWqln376SYcOHdLGjRs1cuRINW/eXJMnT1ZKSory8vI0efJk8+N9fHyq9fXII4/o7Nmzuuuuu+Th4VGtpiZnz57ViBEj1KxZM0VHR6uoqEgffvihnnrqKeXn52vChAl1fk2XGz16tLZt26a0tDQ98MADderHZN68efr3v/+t1q1ba8iQIXJ3d9dnn32mBQsWaMeOHVqxYoVcXFwsHlNRUaFx48bp5MmTuvvuu+Xo6KiPP/5Y8+fPV1lZmf785z/X6bn37dunsWPHqqSkRP369VOnTp30zTffaPPmzdq2bZtWrFih2267zfwa8/LytHr1anXp0kX33XefJKlr1661zt+1a1dNnjxZixYtko+Pjx544AHzth49eljU5uXlKTY2Vr6+voqKitLZs2f1wQcfKD4+XitWrFBERIRF/YwZM/TOO++oXbt26t+/v5o1a6avvvpKr732mnbu3Knly5f/6tHZyZMn6+OPP1Z2drZGjx6t5s2bS5KaNWsmSYqIiND777+vnTt36uabbzY/zvSLh7179+rChQvmcyz37NmjysrKa+71s88+05QpU1RVVaU+ffropptuUn5+vv7zn//o008/1erVq9WtW7c6vYb8/HzFxsbq/PnzuvvuuzVgwABduHBBubm5evfddzVq1Ci1atXqivsJQD0zAgDq7ODBg8Zu3boZe/fubZwwYYLRz8/PuHbtWqPRaDT+v//3/4x+fn7GOXPmGCsrK82PqaysND777LNGPz8/49atWy3m++6776o9x4ULF4yjRo0yBgQEGI8fP26xbdSoUUY/Pz9jZGSk8aeffqpz3w8//LCxa9euxqKiIvNYdHS0MTo62hgWFmZ86qmnzONZWVlGPz8/47PPPmsxh5+fn3HUqFHV6iZNmlTt+aqqqoyFhYXm77/99ltjt27djP379zfm5+db1H7xxRfGLl261DhPTRYvXmz08/MzTp482VhVVWUe//77741hYWFGPz8/4zPPPGPxmGeeecbo5+dn/OGHH8xjw4YNM3br1s14+vTpas9x+b417ffa3HvvvUY/Pz/jI488Yjx//ny17aY/G7t27bIY9/PzM/r5+Rn//Oc/1/haunXrZvz+++/N4++8847Rz8/P+M4779TYx+U/oys9t0lN+yY9Pd3o5+dnvPfeey32T0VFhXHixIlGPz8/4+uvv17jPpgwYYKxtLTUPH769GnjHXfcYQwJCTGWl5fX2MOlqqqqjAMGDDD6+fkZ33//fYttmzdvNvr5+Rn79+9vsb9++OGHGn/uv6am/XX5nH5+fsaFCxdabPvss8+Mfn5+xvHjx1uMm34+U6ZMMZaVlVlsM/0cVqxYUafeavq5mHz//ffmPzcmhw8fNvr5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dvPXXbp00SOPPKLJkyc3SFMAAAAAgOunzsHwUqtXr5aPj0999wIAAAAAsAGrgmGPHj0svj979qxKSkrUrl27emkKAAAAAHD9WH1V0uLiYr300kvq1auXwsPDLS5Os2/fPk2cOFFff/11vTQJAAAAAGg4VgXDoqIijRgxQqtWrZKnp6c6depkcSEaPz8/paen67333qu3RgEAAAAADcOqYLh48WIdOXJEL7/8slJSUjRw4ECL7e7u7urRo4d27dpVL00CAAAAABqOVcFw69atuuuuuzRs2LBaa9q3b6/8/Hxr+wIAAAAAXCdWBcMTJ07I39//ijUeHh4qKiqyqikAAAAAwPVjVTBs0qSJCgoKrliTm5urVq1aWdXUpUpKStS3b1/5+/vrueeeq7a9tLRUr7zyivr27avAwED17dtXr7zyikpLS2ucLzs7W4899pjCwsJ0++2366GHHtJ//vOfWp//rbfe0tChQxUUFKTw8HA9+eSTysvLq7H2zJkzmjVrlu666y4FBgZqwIABWrp0qSorK2us37Nnj0aPHq2QkBAFBwdr9OjR2rNnTx32CgAAAADUH6uCYffu3fXpp5/q/PnzNW4/efKkPvvsM91xxx3X1JwkJSQk6MyZMzVuq6qq0qOPPqp//etfCg0N1axZs9S3b18tX75cjz76qKqqqizqs7OzNWLECO3du1djx47V9OnT5eTkpClTpmjDhg01Pvff/vY3NWnSRDNmzNDo0aP1v//9T3/84x914sQJi9ri4mKNGjVKGzZs0MCBAzVr1izdfvvtmj9/vp599tlqc+/YsUNjxoxRbm6u4uPj9eSTT+rMmTMaM2aMduzYcQ17DAAAAACujlX3MRw9erQmTpyoP/3pT/rHP/5hse2bb77RzJkzdeHCBcXFxV1Tc/v379eaNWv017/+VS+99FK17SkpKUpLS1NcXJxmzpxpHvf19dWLL76o1NRUxcTEmMdfeOEFlZaWavXq1erevbsk6cEHH9Tw4cM1d+5cDRgwQM2bN5ck5eTkaOnSperWrZuSkpLk5PTzrurTp49iYmK0YMECzZ071zz3smXLdPToUU2fPl1jx46VJMXGxqpFixZatWqVYmJiFB4eLunnQDt79my5uLhozZo1at++vSRp2LBhGjJkiGbPnq2tW7fKwcHqu4kAAAAAQJ1ZlTx69+6tyZMnKz09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v3G7d+/Wgw8+qKCgIEnS5MmTNWrUKI0ePdocCiWpe/fuioyM1K5du2zVKtCocY4hgBvWDz/8oD59+liMubu7KzExUUOHDlVSUpJefvll2zQHALguTpw4YbE09KabbpIk+fn5Vavt0qWLTpw4cb1aA24oHDEEcMNydHSUg0P13285ODjo5ZdfloODg1atWiUHBwd16dLFBh0CABqai4uLysvLzd87OztLktzc3GqsNRgM16034EZCMARww/Lx8VFmZmaN2wwGg1566SUZDAatWLFC/v7+17k7AMD10LZtW508edL8fZMmTfTSSy/p1ltvrVabl5en1q1bX8/2gBsGS0kB3LDCw8P18ccfW/ym+HIvvviioqOjlZ2dfR07AwBcL926ddNXX31l/t7FxUUPPPCA2rRpU612165d/KIQqAVHDAHcsCIjI3XixAl9/fXXCg4OrrXun//8p5o3b17r0UUAwI1rypQpdTpv8PTp0/L09FRkZOR16Aq48RiMppt/AQAAAADsEktJAQAAAMDOEQwB2IWysjL9+OOPtm4DAGBDvBcAtSMYArihpaenKzY2Vrfddpv69u2rRYsW1Xgxmv/85z/q16+fDToEADQ03guAa0cwBHDDOnbsmMaNG6cDBw7Izc1NJ0+eVGJiooYPH67Tp0/buj0AwHXAewFQPwiGAG5YixcvloODg1asWKHdu3dr165dGj9+vLKysjR69GidOnXK1i0CABoY7wVA/SAYArhhffXVVxo+fLgiIiIkSU2bNtVTTz2l+fPn64cfftAjjzyin376ycZdAgAaEu8FQP0gGAK4YeXn56tz587VxgcPHqxFixYpNzdXjzzyiAoKCmzQHQDgeuC9AKgfBEMAN6zWrVvrzJkzNW675557tGjRIvNvi/lAAAC/TbwXAPWDYAjghtWpUyft2rWr1u133323Fi1apO+//16vvvrqdewMAHC98F4A1A+CIYAb1t13362dO3fqhx9+qLWmd+/eSkxMvI5dAQCuJ94LgPphMBqNRls3AQDWOHfunPbt26dOnTqpffv2V6zNzMzUkSNH9MADD1yn7gAA1wPvBUD9IBgCAAAAgJ1zsnUDAFCfzp07p9LSUrm7u6t58+a2bgcAYAO8FwBXj2AI4IZmNBqVmpqq1NRUHThwQKWlpeZt7u7u6t69u6KiovTAAw/IYDDYsFMA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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "result.plot(x='month', y='count_id', kind='bar')\n", + "\n", + "plt.title('Year-wise distribution of the tweets')\n", + "plt.xlabel('Year')\n", + "plt.ylabel('Tweet Count')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6edde1a5-de44-46bf-b762-8927e66fadde", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 2\n", + "1 1\n", + "2 1\n", + "3 3\n", + "4 4\n", + "5 5\n", + "6 0\n", + "7 0\n", + "8 1\n", + "9 0\n", + "Name: dayCode, dtype: int64" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_timelines_pd['dayCode'].head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ecb8f23c-e1b2-41ae-a094-49a4bb94c72b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dayCode\n", + "0 156197\n", + "1 145568\n", + "2 154594\n", + "3 146521\n", + "4 137721\n", + "Name: count_id, dtype: int64" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# group by the 'fruit' column and sum the 'quantity' column\n", + "result_c = df_timelines_pd.groupby('dayCode')['count_id'].count()\n", + "\n", + "# print the result\n", + "result_c.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f8dd8cae-fc4d-40b8-aaf5-1e503c3bae8f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"\\nimport pandas as pd\\nimport matplotlib.pyplot as plt\\n\\n#result_m.plot(x='month', y='count_id', kind='bar')\\nresult_c.plot(x='dayCode', y='count_id', kind='line')\\nplt.show()\\n\"" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"\"\"\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "#result_m.plot(x='month', y='count_id', kind='bar')\n", + "result_c.plot(x='dayCode', y='count_id', kind='line')\n", + "plt.show()\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0db6ee8d-ec66-4585-ba3e-f57bf22cd68b", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9AAAAJACAYAAABlv44fAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAADFkklEQVR4nOzdd1gU1/oH8O/sLrD0XhRUrFjALvZo7DX2hhKNvSWmx8Sb5JfiNe3mJjbsDTUWxG6wt9iwi4CKLYoiUkV6298fe3fCsAssCC7l+3mePGbPzJ59Z3b2MO/MmXMElUqlAhEREREREREVSmboAIiIiIiIiIgqAibQRERERERERHpgAk1ERERERESkBybQRERERERERHpgAk1ERERERESkBybQRERERERERHpgAk1ERERERESkBybQRERERERERHpgAk1ERERERESkB4WhAyCistOtWzc8efJEfD179my8++67Bozo1Xh4eEheL1iwAEOHDhVfBwYG4vPPP5esc/v27dcSGxVPeT42L1y4gLfffltSdvToUbi5uRkoInoVixYtwuLFi8XXrq6uOHbsmAEjovIqJycHW7duxf79+3H37l0kJSUhNzdXXF5Wf0/4t6v8K+r8g6oWJtBE5Uz+xKK4eHJYuX3//ffw9/fXKv/qq68wduxYA0RE9HolJSVh/fr1krIhQ4ZUmgscvr6+CA4OlpTJZDIoFAoolUpYWlrCxcUFderUQdu2bdG7d28YGxsbKNrK5f3338ehQ4dKpa5FixZJXvfo0QONGjUqlboNJSMjA61atUJWVpZY9u6772L27Nla665YsQL/+c9/tMq6dOmite57772HgwcPiq+bNGmCwMDAUoycqHQxgSYiqiCysrKwf/9+ncsCAwOZQFOVkJSUJLmjDADe3t6VJoHWJTc3F5mZmcjMzERSUhKePHmCy5cvY/v27Zg/fz6mTZuGCRMmQBAEQ4daYV26dKnUkmcAWseoq6trhU+gTUxM4OXlhStXrohlly5d0rnu5cuXtcouXbqkM4HOv27r1q1fMVKissUEmqgS27x5M7Kzs8XXVlZWBoym7PXu3Rve3t6GDqPMnDhxAvHx8TqX3bx5ExEREahfv/5rjqryad68OY4ePSopc3FxMVA0RIVLSEjADz/8gAsXLmDhwoW8G11CN27ckLxWKBT473//i4YNG0Im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+fDhw8jIyJCU5R/RfcCAAVAqlQDUx8a8efMkJ/C1a9fGL7/8gn379mHHjh2YNm2aZN/t2LED586dK3TbNCewvr6+2L59O/bv34/ff/9dry7PmsHdNm3apLXs119/xdGjR8X/fv3110JjkMvleP/997Fv3z4sW7ZM627zwYMHJe1PWe2PVyWTybQSjtzcXK32wt3dHRMmTMDChQuxadMm/Pnnn9i3bx9Wr16NIUOGSNa9fPkyrl27Jr7O3z1+586dWm3zn3/+KXmd9/jLezcSADp16gR/f38cPHgQe/fuxYoVK/D++++jbdu2Wo8q6cPf319rwKrWrVtj1apV2L17N7788kuYmZlJln/33XfiM7qffvopjh49qrWdzs7OkmPq008/LTIWFxcXcf38NJ+j+U/XGCZ5ZWVlYfz48di9ezfWrVunNUCk5rGOvL7//nvExMSIrx0dHfHdd99h9+7d2L17Nz799FNJF/2//vpLZ/f1ouQ/5pKSksQ7zI8ePcLz588l6+a9CHP16lUxac/fTgPS559L49yhLM8/Hj9+jLfffluyvc2aNcP69eu12miqXNiFm4gkevTogY8//hiA+qR98ODBWLt2rWSdsWPH4p133gEA1K1bF0ePHpV0Bc1/8rZp0yaoVCrxddeuXSUD3dSpUwctW7ZEu3btxJP8x48f46+//notXbl//PFHsXtrvXr1cO/ePclJev6r+QEBAUhPTxdfN2jQACtWrBDvftapUwetWrVCz549xavrL1++xN69ezFu3Lhix5e3CyWg/l4aN24MAOjevTssLCzEO4mZmZnYv3+/3lNaFXfbART6HGCzZs2Qm5uLH3/8USzLfwKtj3HjxmHjxo3icXPixAk8f/4cTk5OANQJTt47Hu3bt5c8J5r/rsrUqVPh4OAgvm7cuDH69OmDzz77THIXVh/572L06dNH0hOgXr166NixIyZNmlTsugHgjz/+kLy2sLDAxo0bYWNjAwDw8PCAu7s7Ro0aJYlp27ZtYlfdTp06wcXFBc+ePQMApKSk4NixY+jbty8A9fF48uRJyedoutwC6pPzvF00jYyMsH79ekmi6enpiaioKMndvD/++APt27cvdPsmTpwoGeyuXr16ha6vUdjgbg4ODsUa+G3SpEmYMWMGAPXvKSMjA3PmzBGXZ2Rk4OHDh2LSUpb741Xp6mqetyup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tGl4//33SytOIiIiIqJiaftuW1xedhnxd+Px98m/cWvXLTQa0sjQYRFRBVbsBFoQBHz44YcYPnw4duzYgatXryI2NhYA4ODggJYtW2Lo0KGoWbNmqQdLRERERKQvubEcPX/uia1DtgIADn9yGPX71YfCpNinwEREAEqQQGvUrFkTH3zwQWnGQkRERERUqjwGecC9qzsenniIhHsJCF4cjA4fdTB0WERUQXGSZiIiIiKqtARBQO//9gbUs1rh1HenkBKTYtigiKjCYgJNRERERJWaS3MXNH+nOQAg40UGTvzfCYPGQ0QVFxNoIiIiIqr0un3fDUbmRgCAy8su43nocwNHREQVERNoIiIiIqr0LKtZovMXnQEAqlwVDn10yMAREVFFxASaiIiIiKqEdh+0g3VNawDAvYP3EPFnhIEjIqKKhgk0EREREVUJRqZG6PFjD/H1oY8OIScrx4AREVFFwwSaiIiIiKqMJqOawK29GwAgNjwWl1dcNnBERFSRMIEmIiIioipDnNbqf058fQJpCWkGjIiIKhIm0ERERERUpbi1dYPXWC8AQFpcGk59d8rAERFRRcEEmoiIiIiqnO4LukNhqgAABC8ORlxEnIEjIqKKgAk0EREREVU51jWs0eHjDgCA3KxcHP7ksIEjIqKKgAk0EREREVVJHT/tCItqFgCA27tv48HxBwaOiIjKOybQRERERFQlGVsYo/u/u4uvD35wELk5uQaMiIjKOybQRERERFRlNXu7Gaq1rAYAiL4ejWtrrxk2ICIq15hAExEREVGVJcgE9P7tn2mtjv3rGDJeZhgwIiIqz5hAExEREVGVVqtzLTQa1ggAkBKdgr8W/GXgiIiovGICTURERERVXs+fekJuLAcAnPv1HBIfJho2ICIqlypkAp2cnIyffvoJEydORLt27eDh4YFFixZprbdhwwaMHDkSbdu2haenJ7p27YoPPvgAEREROuv19/dHnz594OnpiW7dumHx4sXIysrSWi8uLg5z585F27Zt0axZM4waNQrnzp3TWefZs2cxatQoNGvWDG3btsXcuXMRF6c9z2BWVhYWL16Mbt26wdPTE3369IG/v38x9wwRERERlYRtHVu0ndMWAJCTkYMjc48YOCIiKo8qZAKdmJiIbdu2ITMzEz169Ch0vTfeeAPz58/HmjVr8O677yIsLAwjR47E/fv3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PSkpSc7OznJ1dc31HA8PDyUlJVm19fDwyLOdeX7On3m19fT0tKlPV1dXOTk5WbUtjNTUVKvHRqNRTk5OysrKyvMiaZUqVZKUfb63yWR9boyjo6McHByUmZmpjIwMq3kGg0HOzs4ymUy5zvGWJGdnZxkMBstrpqWlycEh+5YKDg4OcnR0vG6/eS2LJDk5OcloNCo9PV1ZWVlW88z95res1+s3IyNDmZmZVvOKYx1er9/81mFht01+y1rQdWhrv1cva85lK2/r0Jb397XWob3e33kta0m/v/Nbh+bnm/cBUtleh+wjim8fYa47LS1NLi4uFW4dso/If9uYXb0PKM/rsLztIyImRejwD4eVlZGlLe9uUUhkiLzreJfKPiLnPsDR0bFQnyPKwjpkH1G4bZNz2cviOrTFDROgk5KS9Oijj8pkMun999+X0Wg9+J7fIeG2tr163rXa2tquqLKyshQbG2s1zd3dXf7+/srMzMw1T/p3dP7MmTO5Lrbm7+8vd3d3JScnKz4+3mqeq6uratasKZPJlGe/devWlYODg+ULgbi4OMsfTl9fX3l6eurKlStWh9dL2b+8N910kyTpxIkTuX7RAgIC5OzsrMTExFxXWPfy8pKPj49SU1N18uRJq3mOjo6qU6eOJOnUqVO5fplq1aqlypUr6/z580pMtL5fYtWqVVWtWjVlZGTkWlaDwaD69etblvHqnVn16tVVpUoVJScn6+zZs1bz3NzcVKNGjTy3myTVq1dPBoNBZ8+e1eXLl63m+fn5ycPDQ5cvX7acSmDm4uKi2rVrS1Ke/d58880yGo06d+6cLl68aDXP29tb3t7eSklJ0d9//201z8nJSTfffLMk6e+//861A61du7ZcXFyUlJRk9UVQznbp6em5ajIajapXr56k7NMtrt5J1qhRQ25ubrp48WKuq9pXqVJF1atXv+b727xt4uPjdeXKFat51apVU9WqVXXp0iWdOXPGal7lypVVq1YtSXmvwzp16sjR0VEJCQlKTk62mufj4yMvLy+lpKTo1KlTVvOcnZ0VEBAgSTp58mSuHf5NN92kSpUqKSkpSefPn7ea5+npKV9fX6WlpenEiRNW8xwcHFS3bl1J2e/vq/+A1axZU66urrpw4YLOnTtnNa809hGS9T5A+ncfcfbsWV26dMnquewjslWEfYT59z8uLk4uLi557iOk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+HCZTCZ7l4h/tG3bVpKsRqGjo6MVFhamVq1ayWAwaMeOHVbzGjduLHd3d/33v//Vm2++qVtuuUUfffSRJk6cqMOHD2vgwIE6e/as5TkffvihJk+ebGl3//336z//+Y+OHTtWeguKYvfee+/p5MmTmjRpkl577TX99ddfGj58uDIzM+1dGkpAVlaWMjIyrP6Zvffee/r777/1yiuv6NNPP5WPj48dK0VRtGjRQrt379brr7+u3bt3Kz09Pc92f/75pzp16qRJkyZp1qxZevjhh7Vy5Uo98cQTljZPPvmkevXqJSn7NBHzv+sd+g/7sXXbF9RLL70kJycnTZkyRWPGjFFMTEyZGtHmEG4U2V133aXIyEgdPnxYDRs21Ndff63evXtbHdItScuWLdPBgwf1/vvvW8J1+/bt5erqqsmTJ2vz5s1q3769pX1qaqrmzJlj6adJkybq2LGjVq5cqccee6z0FhClYv78+Tp48KAWL15sOeSvXbt28vf319NPP62ff/5ZERERdq4SkhQaGiqj0aiYmBjdcccdSkxM1OHDhzVu3Di5ubmpcePGioqKUkREhE6dOqUTJ06od+/e+vXXX7V48WKNHz/e6nzoNm3aqFevXpozZ47Gjh2rCxcuaObMmerRo4cmTZpkadegQQPdf//9qlu3rj0WG8WgQYMGmjx5suWx0WjU6NGjtWfPHg7drYDuvffeXNPmzJkjSQoICNC0adNKuySUgOeee05Hjx7V/PnzNX/+fDk5OSkkJERdu3bVAw88YLkezpNPPml5jslkUqtWrVS/fn09+OCD+v333xUcHKyAgAD5+vpKyn2aCMoeW7d9QXXs2FEvvfSS5fH58+f17rvvKj4+Xn5+fsVVfqERoFFkYWFhCggI0Ndff63+/ftrz549eR5+FxUVJVdX11xXYB0wYIAmT56srVu3WgXo8PBwqxDu6+srHx8fnTx5suQWBnazYcMGNWzYUI0aNbIapejQoYMMBoNiYmII0GWEh4eHgoODLYdZbtu2TQ4ODmrVqpWk7IBtPu/Z3CY8PFwbNmyQwWBQnz59rLaxr6+vgoODLSPau3btUmpqqu68806r123VqpVq1apV4suHktO1a1erx+Yref/99998WK6A3n77bdWvX99qmvlw3Z49e9qjJJQALy8vLVy4UHv27NHWrVu1d+9excTEaMqUKVq0aJGWLFkib29vxcbG6v3331dUVJQSEhKsjiw7evSogoOD7bgUKAxbt31BXe9vBQEaFYLBYNCAAQM0f/58paamqk6dOmrTpk2udklJSfL19ZXBYLCa7uPjI0dHRyUlJVlN9/T0zNWHs7OzUlNTi7N8lBEJCQn666+/1KRJkzznJyYmlnJFuJ7w8HDNmTNHcXFxio6OVpMmTSzfNIeFhWnOnDm6ePGioqOj5ejoqNatW2vNmjUymUy65ZZb8uzzpptukiTLvsA8CpFTXtNQfly9X3d2dpYkpaSk2KEalLT69evnuoiY+Uu1svAhGMWradOmlu2dnp6uyZMna+7cuZo1a5aeeuopDRo0SJUqVdLo0aNVp04dubi46PTp0xoxYgT7gHLuett+3LhxBe6vrP+tIECjWAwYMEDTpk3TokWL9Mwzz+TZxtPTU7t375bJZLIK0QkJCcrIyJCXl1dplYtS5OzsnOsicVJ2IM65zb28vFSpUiW98cYbefbD+6NsMQfomJgYxcTEqFOnTpZ5rVu3lpQ9Mh0dHa2mTZvKzc1NXl5eMhgMWrBggeWPYU7maeY/nDnPiTY7e/Yso9AVnK37DJRvV3+ZjorFyclJI0aM0Ny5c3X48GFFRUXpzJkzmj9/vsLCwiztLl68aMcqURKu3vbS9ffr5REXEUOx8Pf317Bhw9SlSxf169cvzzbt2rXT5cuXtXbtWqvpy5cvt8xHxVOrVi0dPHjQatqxY8dyXQyqc+fOio2Nlaenp+WbzJz/ateuXZplIx+hoaFycHDQ6tWrdfjwYasPRO7u7mrUqJGWL1+ukydPWm5f1blzZ5lMJsXFxeW5jc2HaLVo0UKVKlXSihUrrF5z586dnMJxA7B1nwGgbMh5R4ac/vjjD0nZ9/42f2Fy9ZenixYtyvW8sjbaiGuzZdtLee/Xt27dWm7vssIINIrNmDFjrju/X79+WrBggZ5//nmdPHlSgYGB2rFjh2bMmKGIiIhrHtaJ8q1v374aO3asXn75ZfXq1UsnT57UrFmzco0kPfzww1qzZo0efPBBDR48WEFBQcrKytKpU6f0yy+/aOjQoWrevLmdlgJXq1Kliho3bqy1a9fKaDRaRp3NQkNDNW/ePEn/3v+5devWuu+++/Tiiy9q7969Cg0NVeXKlRUfH68dO3YoMDBQgwYNkoeHh4YOHapPPvlEEyZMUO/evXX69GlNnz6dwz5vALbuMwCUDcOGDVP16tXVpUsX1atXTyaTSQcOHNDnn38uV1dXRUZGqlq1avLw8NDEiRM1YsQIOTo6asWKFblClSQFBgZKkmbOnKlOnTrJaDQqKCgozyOXYF+2bHspe7/+wQcf6IMPPlBYWJiOHDmiL774Qu7u7nZegsIhQKPUVKpUSf/73/80depUzZo1S4mJifL399fQoUPzvI0VKoY777xTZ86c0aJFi7R06VI1bNhQL7/8sj766COrdq6urlqwYIE+++wzffnllzpx4oRcXFxUo0YN3XLLLRy2WwaFh4drz549atSoUa6r7oeGhmru3LlycnJSy5YtLdNfffVVNW/eXF9++aX+7//+T1lZWapWrZpatWqlZs2aWdqNGjVKrq6uWrhwob755hvVq1dPr7zyij7//PNSWz7Yh637DABlw/Dhw7Vu3TrNmzdPZ86cUXp6uvz8/HTLLbfo8ccft1xIbsaMGXr77bc1duxYVa5cWd26ddPUqVPVv39/q/7uuOMO7dy5UwsXLtRHH30kk8mkdevWcSRaGWTrth82bJiSk5O1bNkyff7552rWrJk++OADqyuzlycGEzdXBQAAAAAgX5wDDQAAAACADQjQAAAAAADYgAANAAAAAIANCNAAAAAAANiAAA0AAAAAgA0I0AAAAAAA2IAADQAAAACADQjQAAAAAADYgAANAAAAAIANCNAAAAAAANiAAA0AAAAAgA0I0AAAAAAA2IAADQAAAACADQjQAAAAAADYgAANAAAAAIANCNAAAAAAANiAAA0AAK7p559/1r333qvWrVsrKChI48ePL3Rf0dHRCgoK0vTp04uxworloYceUlBQkL3LAABcg6O9CwAAoDw6ceKEunXrZjXNxcVF7u7uql+/vlq1aqX+/fsrICDAThUWXWxsrJ566il5eHjonnvukZubmxo1anTd53Tt2lWStH79+tIo0SY9evRQbGystmzZIm9vb6t5u3bt0sCBAyVJ33zzjYKDg63mnz59WhEREapfv75++OGHUqsZAFA2EaABACiCgIAA9enTR5KUlpamhIQE7dmzRx9//LFmzJihRx55RM8884wMBoOdKy24qKgopaWl6YUXXtDtt99u73IKrW3btjp+/LhiYmLUu3dvq3kxMTGW/0dFReUK0FFRUZKk8PDwki8UAFDm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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# group by the 'dayCode' column and count the IDs for each dayCode\n", + "result_c = df_timelines_pd.groupby('dayCode')['count_id'].count().reset_index()\n", + "\n", + "# plot the counts by dayCode\n", + "plt.plot(result_c['dayCode'], result_c['count_id'], color='purple', linewidth=2, linestyle='-', marker='o', markersize=8)\n", + "plt.title('Timeline Analysis over the Days of the Week', fontsize=18, fontweight='bold', pad=20)\n", + "plt.xlabel('Day of the Week', fontsize=14, labelpad=10)\n", + "plt.ylabel('Count', fontsize=14, labelpad=10)\n", + "plt.xticks(result_c['dayCode'], ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], fontsize=12)\n", + "plt.yticks(fontsize=12)\n", + "plt.grid(axis='y', linestyle='--', alpha=0.7)\n", + "plt.tight_layout()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5f258db9-d30a-43d6-8bb5-ec4d79c85302", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 972066 entries, 0 to 972065\n", + "Data columns (total 5 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 created_at 972066 non-null datetime64[ns, UTC]\n", + " 1 count_id 972066 non-null int64 \n", + " 2 year 972066 non-null int64 \n", + " 3 month 972066 non-null int64 \n", + " 4 dayCode 972066 non-null int64 \n", + "dtypes: datetime64[ns, UTC](1), int64(4)\n", + "memory usage: 37.1 MB\n" + ] + } + ], + "source": [ + "df_timelines_pd.info()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b3b2a155-15ed-4156-9ee7-b5a97f052e73", + "metadata": {}, + "outputs": [], + "source": [ + "df_timelines_pd['day'] = df_timelines_pd['created_at'].dt.day" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a4df2fc7-7dcf-4f2a-af7b-cdb42237f5e3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"\\nimport pandas as pd\\nimport matplotlib.pyplot as plt\\n\\n# group by the 'fruit' column and sum the 'quantity' column\\nresult_d = df_timelines_pd.groupby('day')['count_id'].count()\\n\\n#result_m.plot(x='month', y='count_id', kind='bar')\\nresult_d.plot(x='day', y='count_id', kind='line')\\nplt.title('Timeline Analysis over the day of the month')\\nplt.show()\\n\"" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\"\"\"\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# group by the 'fruit' column and sum the 'quantity' column\n", + "result_d = df_timelines_pd.groupby('day')['count_id'].count()\n", + "\n", + "#result_m.plot(x='month', y='count_id', kind='bar')\n", + "result_d.plot(x='day', y='count_id', kind='line')\n", + "plt.title('Timeline Analysis over the day of the month')\n", + "plt.show()\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "505b690d-4bdb-4e15-a78f-f013e2046a71", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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D8SyfuXKlViyZInWDcDa6NmzJw4ePAigvNx9+eWX4eTkBABYt26d+H2Ry+Xo1q0bDh8+XOU+//jjDyxYsAC5ublaz5eWluLmzZu4efMmtmzZgkceeQSLFi2Cj49Plfv8/vvv8dlnn2ldJ8Z8f2tr8eLF+Oabb7RuHNy+fRsrVqzAwYMHsX79+gbdC44qx2WsiBqxjz76SKtSKfXXX3/h6aefNhg4COLi4nDkyBG95z///HN88cUXBrunS+Xm5mLOnDkG92EOv//+u14AKXXkyBGDXafXr1+PBQsW6AXPukpKSvDvf/9bq5WvJnRbPZ566in4+vrqjVOrqpu3VE3zbqyioiK8/vrruHr1arXeN2rUKK1KyJ07d/Ra3wHoVS5HjBghBtlff/21weDZFM6fP1/pd8AU5s2bZ1SQqVQq8emnn+Lbb78Vn/Py8tJbqmnbtm167927d69W66WbmxsGDRokPk5MTMTTTz9t1KoA69atw3//+98qtzt16pTFg+e0tDS89dZbFZZz9+/fx6effqr3vDnOR2099dRTer08zpw5g5ycnBrt7/Lly/jHP/4hPm7Tpg26desmPlar1YiNjdV73++//671uFu3bmjWrFm1jr1w4UIsXbpUL3jWpVarsXLlSvzvf/+r1v4t4X//+59W8CylVqvx/vvvIy8vT+v50tJSPP/88waDZ11XrlzBtGnTcP/+fZOkV7pUU05ODrZs2SKmad26deJrAwYMMKpn1Z49ezB37ly94NmQw4cPY8aMGQa74UvduXMHn376aYXXSUXf39o6ffo0vv766wpb3ZOTk/H999+b/LhUfzCAJmrE1Go1Zs2ahW3btmHZsmV63amPHDkCuVyO+fPn4/fff8eHH36o18qydetWrceJiYn47rvvtJ576qmn8NNPP2H79u1Yvnw5unbtKr6mVCrx73//u8IKrimp1Wr4+Phg4cKF+O233/DWW2/p5Uc3+Lh//75WCykA9O7dG99//z22b9+O1atX683U+t5779W4Unvx4kVcunRJ67nhw4cDKG9tlNq3b5/YVbkqNck7UD4Z3ZAhQ/Dee+/hxx9/xObNm7Fz505s2LABb775plY3ttLSUr0lh6ri6uqKkSNHaj2nG3Tdv38fJ06cEB/LZDKt9+guAzRt2jTExcXhjz/+wKZNm/Dll1/imWeeQevWras9c7H0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CAgQgwgvLy+ttcRry9LnIyUlBWq1GgUFBbh27Rp27dqFnTt36o3zfOqpp7S+84ZuQn711Vd49tln4erqigsXLuDrr782OjCcMmWK1ndHeoOvf//+Nb7pKfxGCFQqFaZPn4558+ahdevWuHHjBj755BO9G4rSsbrmoNsz4/Dhwzh48CCaNWsGmUwGBwcHk7eWTpo0SWulg7/++gtPP/00Jk2ahLCwMNja2iI9PR2XLl3CwYMHcfjwYXTq1KnaM59X5aGHHsK8efOQkZEBQH+C0aoMGjQICxcu1JqJ+91330Vubi569OiB7Oxs/PDDD1ozcAPl14I5bjoZujZXrVqFKVOmiN3V/fz8LN5FneovBtBEZFKRkZGYOXMmvv/+e/G5Gzdu4D//+Y8FU1VzAQEBmD9/Pt5++23xufv372vNJFpbhtZ+Hjx4cKVLbvTv318rgBbWhDZl175BgwZpdQl98OABXnrpJa1t/Pz8TDoB3OTJk/HTTz/pTXrk4OBQ6YQ2V69eNar1Vy6X661HWpW8vDxs27bNqHU/qzuT/ODBgzF48GCtpYeSk5MrHfYwZ86cCsd6jx49WqsrptSIESMMjuOTyWR4//33MWXKFHFCqeLiYvz444966/XWNQcHB7Rt21ZrJuO9e/dqzc784YcfmvQGnKXPh3TSuor0799frwwKCwtD69attSaC0j1Xtra28Pb21pqssCL9+vVD06ZNDY6prmn3bQBo3749nn76aa0lE+/du4fXXnutwveMGTMG0dHRNT6mMTp16qT1Hc/OztZaUqp79+5arfCmMGnSJOzZs0drFusjR45o3VSrKzNnzqzxe52dnfG///0PL730klh2FxcXVzqjeNu2bbXOrymFhobqXefr16/XKht/+ukns19T1HCxCzcRmdxrr72GV155BXK5cffoqtNVzBImTJiA999/3+jWRS8vL4MzdlZEd+1nOzs7vSWndOkGasKa0KY0efJkve6sUj169MCcOXNMesymTZsabEkfOHCgONazpmxtbbFgwYIKg8/aevjhhzFr1qxqvUcmk2HhwoVa66VWRC6X47XXXhPXRDWkQ4cOaN26tcHjVBZkRkZGYsWKFUavk2pvb19nwy6E5czqkrWeD29vbyxYsEBrvWGp999/v8LWeFtbW7z99ttGr8VtY2NjcBmjwMDAKsunqrz++ut47rnn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mtMyPNz475ScHA+WpPbgAJqIiIiIyIOu5yucdcGIdu0Q6uOD6vaQAkCojw+Gt21bE8WqEbwCXRkH0EREREREHnQ9X+GsC3zUaqxMTAQAq4No6fWViYn1ar1uXoGujANoIiIiIiIPup6vcNYV9yUkYPP99yPExwcAjDMGpL8hPj745v7769063SE+PoiomPHAAXS5+nN6hIiIiIioDpKucA5etw4KwOJ6w/X1CmddMighARdnz8bG48ex8ehRpOXkIC4sDMPbt8fwtm3r7X5pGRaGrKIiXMzPR2FpKfw1Gk8XyaPq514mIiIiIqpDpCucEzZvRq5WC6VCAYMQxr8hPj5YmZhY765w1jU+ajXGduiAoS1aICkpCW3atIFfPb8nvWV4OPampQEATuXkoGODBh4ukWdxAE1EREREVAtcr1c4qXYb1KoVGgYGomVYGGIDAz1dHI/jt5CIiIiIqJa4Hq9wUu02rG1bDON990Z8iBgRERERERGRDTiAJiIiIiIiIrIBB9BERERERERkld5gwJncXPx05oyni+JxvAeaiIiIiIiIrOq/ahV2nTsHALj67LMI8vb2bIE8iFegiYiIiIiIyKqmISHGf5/KyfFcQWoBDqCJiIiIiIjIqpZhYcZ/p2Rne7AknscBNBEREREREVnVMjzc+O8UXoEmIiIiIiIisszkCjQH0ERERERERESWteAUbiMOoImIiIiIiMgqf40GsYGBAHgFmgNoIiIiIiIiqpI0jTurqAh5Wq2HS+M5HEATERERERFRlfgk7nIcQBMREREREVGVpCdx+6rVyCgs9HBpPEft6QIQERERERFR7Tbpxhsx5oYbEBsYCKVC4enieAwH0ERERERERFSlCD8/TxehVuAUbiIiIiIiIiIbcABNREREREREZANO4SYiIiIiIqJqfXfyJH45dw4pOTlYPngwwnx9PV2kGscBNBEREREREVVr68mTWLJ/PwDgZHY2usfFebhENY9TuImIiIiIiKhaXAuaA2giIiIiIiKygbQWNACk5OR4sCSewwE0ERERERERVcvkCjQH0ERERERERESWNQsNhVKhAMAp3ERERERERERWeavViA8OBlB+BVoI4eES1TwOoImIiIiIiMgm0jTuayUlyCwq8nBpah4H0ERERERERGST6/1J3BxAExERERERkU3kT+I+dR0+SEzt6QIQERERERFR3dA5Jgb3tWqFlmFhaBMZ6eni1DgOoImIiIiIiMgmtzZujFsbN/Z0MTyGU7iJiIiIiIiIbMABNBEREREREZEN6twU7r1792LLli04cOAALl++jMDAQLRv3x6PPvoo2rdvb9zu2Wefxddff13p802bNsX27dsrvb5q1SqsXr0aaWlpiIqKwtChQzF16lR4eXmZbJednY25c+fil19+gVarRevWrTFr1iz06NGjUpp79uzBBx98gBMnTsDHxwf9+vXDnDlzEC678Z6IiIiIiKiuEULgUkEBwnx94aOuc8NKh9W5mq5duxZ5eXkYP348WrRogZycHCxfvhyjRo3Cp59+ajKQ9fHxwcqVK00+7+PjUynNxYsX44MPPsDDDz+Mnj174siRI5g/fz4yMjLwn//8x7hdaWkpJkyYgGvXruGFF15AeHg4Vq9ejYceegjLly9H165djdv+/fffmDJlCvr06YOPPvoI2dnZePfddzFhwgRs2rQJGo3GDa1DRERERETkXm/9/jv+89tvKCorw68TJlxX90TXuQH0yy+/XOkKbu/evTFw4EAsWbLEZACtVCrRqVOnKtPLzc3F4sWLMXLkSDz55JMAgG7dukGn02H+/Pl48MEH0aJFCwDAhg0bcPLkSaxbtw433nijcdvBgwdj7ty52LBhgzHdd955B02aNMGCBQugrjgjExcXh9GjR2Pjxo0YM2aM021BRERERERU0/y9vFBUVgagfC3o62kAXefugbY0/dnf3x/NmzfHpUuX7E5v9+7dKCkpwdChQ01eHzp0KIQQ2Llzp/G1nTt3omnTpsbBMwCo1WoMGjQIhw8fRkZGBgAgIyMDR44cweDBg42DZwDo3LkzmjRpYpImERERERFRXXI9rwVd565AW5Kfn4/jx4+je/fuJq9rtVr07NkTOTk5iIyMRP/+/fH4448jJCTEuE1KSgoAoFWrViafjYqKQmhoqPF9adubbrqpUv4JCQnG96Ojo3Hy5EmT1823/ffffx2rqExJSYnJ/yuVSnh5ecFgMKCs4myQnLe3N4DyaehCCJP31Go1VCoV9Ho9dDqdyXsKhQIajQZCCJSWllZKV6PRQKFQoKyszPh+aWkpVCoVVCoV1Gp1lelaqgsAeHl5QalUoqysDAaDweQ9KS2DwWDxs1Jdq0pXp9NBr9ebvGfehub1saUNq0rX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aJFd6Y4fPx7jx4+vdruIiAi8/fbbNqXZs2dP9OzZ065yEBERERER1XYhPj64UzZb93pRJ++BJiIiIiIiIqppHEATERERERER2aDOTeEmIiIiIiIizzuTm4vfzp/HqZwcjGrXDjdUrEpUn3EATURERERERHb78fRpTPvuOwBAXFDQdTGA5hRuIiIiIiIistv1uBY0B9BERERERERkt+txLWgOoImIiIiIiMhuDYOC4KMuvyuYA2giIiIiIiIiK5QKBVpUXIU+k5sLvcHg4RK5HwfQRERERERE5BBpGnepXo8LV696uDTuxwE0EREREREROeR6uw+aA2giIiIiIiJyyPX2JG4OoImIiIiIiMgh19sVaLWnC0BERERERER1U8vwcDQNCUHL8HAkyK5G11ccQBMREREREZFDYgMDcWbmTE8Xo8ZwCjcRERERERGRDTiAJiIiIiIiIrIBB9BERERERETkNCEE9AaDp4vhVhxAExERERERkcN+O38e3T79FOHvvIOP9u3zdHHcig8RIyIiIiIiIocpFQr8nZ4OoP4vZcUr0EREREREROQw+VrQJ7OzPVgS9+MAmoiIiIiIiBwW5e+PQI0GAK9AExEREREREVmlUCjQMjwcAHAuLw+ler2HS+Q+HEATERERERGRU1pUTOM2CIGzubkeLo37cABNRERERERETpHfB12fp3FzAE1EREREREROMRlA1+MHiXEATURERERERE6R7oEGeAWaiIiIiIiIyKrrZQq32tMFICIiIiIiorotws8P8wYORNPQULSNjPR0cdyGA2giIiIiIiJyikKhwBM9eni6GG7HKdxERERERERENuAAmoiIiIiIiMgGnMJNRERERERETtPqdDh25QpOZmejSUgIejRq5OkiuRwH0EREREREROS0wxkZ6PbppwCAqTfdVC8H0JzCTURERERERE5rcR0sZcUBNBERERERETktzNcXYb6+AICU7GwPl8Y9OIAmIiIiIiIil2hZcRU69do1FJeVebg0rscBNBEREREREblEy/Bw479P1cNp3BxAExERERERkUu0rOf3QXMATURERERERC5hMoCuh/dBcwBNRERERERELiGfws0r0ERERERERERW1Pcp3GpPF4CIiIiIiIjqh2AfH0T5+0OlUCDK39/TxXE5DqCJiIiIiIjIZc7PmgUfdf0canIKNxEREREREblMfR08AxxAExEREREREdmEA2giIiIiIiIiG9Tfa+tERERERERU464UFuLZnTuRkpODbg0b4t2BAz1dJJfhAJqIiIiIiIhcxletxvKDBz1dDLfgFG4iIiIiIiJymUBvbzQICAAApGRne7g0rsUBNBEREREREblUy7AwAEBGYSGulZR4uDSuwwE0ERERERERuZQ0gAaAUzk5HiyJa3EATURERERERC7VMjzc+O/6NI2bA2giIiIiIiJyKfkV6BRegSYiIiIiIiKyzOQKNAfQRERERERERJa1kF+B5hRuIiIiIiIiIsv8vLzQMDAQQP26Aq32dAGIiIiIiIio/nn05puhFwItw8IghPB0cVyCA2giIiIiIiJyued69/Z0EVyOU7iJiIiIiIiIbMABNBEREREREZENOIWbiIiIiIiI3KK4rAyncnJQotejbUiIp4vjNA6giYiIiIiIyOVKdDoE/Pe/MAiBrg0b4pcxYzxdJKdxCjcRERERERG5nLda/b+lrOrJWtAcQBMREREREZFbtAoPBwDkarXILi72cGmcxwE0ERERERERuUXLsDDjv0/n5nqwJK7BATQRERERERG5RcuKK9AAcIoDaCIiIiIiIiLLeAWaiIiIiIiIyAa8Ak1ERERERERkg2ahoVAqFAB4BZqIiIiIiIjIKo1KhcbBwQDKB9BCCA+XyDkcQBMREREREZHbSNO4vVQqFOh0Hi6Nc9SeLgARERERERHVX0vvvReB3t7wEQJJSUmeLo5TOIAmIiIiIiIit4kOCMCGY8ew6dgxpOXkIC45GcPatcOIdu3go65bQ9K6VVoAe/fuxZYtW3DgwAFcvnwZgYGBaN++PR599FG0b9/eZNtjx45h7ty5OHToEFQqFbp3745nnnkGjRo1qpTuqlWrsHr1aqSlpSEqKgpDhw7F1KlT4eXlZbJddnY25s6di19++QVarRatW7fGrFmz0KNHj0pp7tmzBx988AFOnDgBHx8f9OvXD3PmzEG47El0RERERERE9dWW5GRM2LwZuVotlAoFDELgQE4OvklJwczt27EyMRH3JSR4upg2q3P3QK9duxbp6ekYP348li5dihdeeAE5OTkYNWoU9u7da9zu9OnTGDduHMrKyjB//ny8+eabOHfuHMaMGYOcnByTNBcvXow33ngDAwcOxGeffYYxY8bg448/xmuv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EEJ4uhBku3///RdCCGg0Gk8XpRIhBMrKyuDl5QWFQsF8mA/zYT7Mh/kwH+bDfJgP82E+NZ6PI0pLS6FQKNC5c+cqt+MAuo45cOAAhBDw8vLydFGIiIiIiIjqhbKyMigUCtx4441VbscBNBEREREREZENeA80ERERERERkQ04gCYiIiIiIiKyAQfQRERERERERDbgAJqIiIiIiIjIBhxAExEREREREdmAA2giIiIiIiIiG3AATURERERERGQDDqCJiIiIiIiIbMABNBEREREREZENOIAmIiIiIiIisgEH0EREREREREQ24ACaiIiIiIiIyAYcQBMRERERERHZgANoIg/S6/WeLoLLCSHcmr7BYHB7HnI1mRcRERER1W4cQJPTOMCwT0FBAd544w0AgEqlcusgurS0FHl5eW5LX57Pn3/+CQBQKBRuy6ewsBBPPPEELly44LY8zCkUihrr4waDoUbyobqhpvpdfYzh/C5RfcLfIMfVxzqR53EATQ7T6XQoLS11+wCjrKwMqamp+OOPP3DixAm35VNaWordu3dj9erV2LRpk1vy0Ov1mD59OlatWoUpU6ZACOG2QXRBQQH69u2L7777zq37p6CgAJMmTcKnn36KnTt3ujWfMWPG4IcffsCKFSvclo9Wq8WXX36JN998E2+88QauXbsGhULh8h/h0tJSnDp1Cnv37sWZM2cAAEqlZ0JyfRhAeaIO7spT6ms1EVulfNyprKwMly9fdvuBbGFhIV5++WUUFBTU6HfJnftIajOeTLEdY4H9pFjg7u8NY4HjajoW1HRedY3a0wWguqmwsBDPP/88brrpJtx///3QaDQQQrj8QKywsBCzZ8/GmTNncOHCBQQGBqJ///7473//69J8CgoKMH36dFy+fBlpaWkQQmD79u345JNPXJpPUVERioqK0KxZMyQlJWHChAlYuXKlcRCtUqlckk9BQQGGDh2KZs2aoX///m47QC4sLMSIESMQGRmJKVOmoFOnTibvu6pPFBQUYNCgQYiNjUWrVq2wZ88eZGRkIDo62um0zfMZN24cdDodcnJykJubi99//x3ffPMNNBqNS/OZPn06zp8/jytXrsDHxwedO3fGCy+8gPj4eHh5ebksL3OlpaXIzMxEZmYmWrRoAW9vb3h5ecFgMHhsAO8MvV6PkpISpKWloVWrVm6JQ0D5gV96ejpS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ZiYOHz6MNm3aVJlHdflI99BNmjQJSqUSn3zyCd5++20YDAYkJibi9OnTWLVqFUpKStC5c2eXtJvEYDAgLi4O48aNMy4L17t37yrzsLU+QPnVIpVKhb/++gsdOnRAREQEsrOzjVe4pLysxaKq8gGAFi1a4D//+Q9GjBhhnOkirdGblpaG9PR0dOnSpcq6FBYWYuTIkWjQoAGmT5+OZs2aYfny5dixYwcSEhIwefJk46wtZ2KBtXy2bduGFi1aYPLkySbbOxoL7M0HcCwW2JKPfF1pR2OBrfVxNhZYy+eHH35AixYtMGXKFLRr1864vaOxoKr+1qpVKzz00EOYNGkS1Gq1U7HAkf7mSCyoqj4tW7bElClTADgfC6zl89133yEhIQETJkzAG2+8gVGjRjkcC6R8RowYgZiYGLz44oto2rQp1q5di6+++goHDx5Ep06dMHPmTOj1eixatAgXLlzA0KFDHYoH1eUD/O9742g8qBU8MGineqqsrEy8+eabom3btjadpXLU+vXrjWfp3HmGaunSpWLcuHHGe03qug8//FCMGTNG9O/f3231KSkpEUePHhVfffWV2LNnj1P3y9hqzZo1IiUlxS1pJycni+eee048/PDDYuHChSZXil3t5MmTYsaMGQ7vH51OJ+bPny8GDhwoFi1aJO6++27RvXt3k+XlJKWlpWLJkiWiU6dOomPHjqJfv37G5eiq++7ako+1s+3p6eli2rRponPnztXuM3vzka56Pvnkk2LYsGHixRdfFB06dKh2dooz9Tl37px45plnROfOnaudbWNLPlIdLl++LIYMGSIGDBggdu/eXekKtbP5WLpXUAghLly4IJ555hlx0003VXuVzp7+ptVqxYoVK0T79u2NV3L69OkjevXq5db+tn//fpGQkCCee+65Kq8aOpLPf//7X+OVldmzZ4uJEyeKnj17VvvdtXf/yJ07d0688MILonv37uL06dNW8ygtLRVz5swRDz74oEhNTTWml52dLfr37y+mT59u3LakpMThWFBdPlU9y8OeWGBvPo7GAnvzkfcHe2KBPfk4EwvsrY+839kTC+zpb87EAmf6mz2xwN58HI0F1eVT1b3NtsYCIcq/41OmTBEPPviguHDhgvH7kZSUJDp16iSOHj1qErOXLl0qOnbsaHc8qC6fY8eOWX3miT3xoLbgAJpc6vz589V+mZ117tw5kZiYKE6dOuXWfM6ePStWrVol0tLS3JpPTTl58qSYP3++WweBNclV6yNXxx1T6i0pLS0V+/btc7i/ObJG+4EDB8TGjRvFa6+9Jr744gub+oaja8EXFhaK5557TiQkJNh0gsDRfF544QXjLSTSQ+3ckc/rr78uxo4dK26//XaX1kfy+++/i6NHj1Z7sOeq+sydO1c88MADok+fPm7bP4cOHRKbN28Wb731lti4caPJerquro/ktddeM3nIk7P5SAeF165dEwsXLhS9evUS9913n3j++edt+u2zNR/zuPPbb7+JJ554QvTu3bva/XPw4EExZMgQ8cUXXxjTkdJ9+eWXxcCBA0Vubq7JZxyJBbbkk5eXV+lz9sYCR/N58cUX7YoFjuZjbyywNx9HY4Gj9bE3FjjS36RY8Pbbb9scCxytj8TWWGBrPtJ7jsYCR+tjTywQovy7PXbsWONDY6VYmZSUJAYOHCgeffRRcc8994iJEyca0/vnn3/sjge25HPvvfea5GMwGOyOB7UFB9BUJ9nz5F5n1NTgqaZYe3ot1Q9//fWXyYGK9GT86g7O3ZWPXGlpqfjxxx+rvZrhbD7Lly8X7dq1s+sstiP5bNy4Ubz00kvi3Llzbs3HEfbmYzAYxIoVK8Tjjz8uzpw54/J8PNHfHMnTkXwuXbokSkpK7Np3juRz6tQp8cUXX9j0/IX09HQxY8YMce3atUrvLVy4UPTo0aPSgMYRjuaj1WrtigWO5rNs2TK7YoGj+axfv1783//9n82xoDbvH4PBIJYvX25XLKjN9RGi6nvWXZlPenq6KC0ttTkWOJpPcnKyzbFACCGKiorEr7/+anKvfElJibjzzjvFbbfdJl555RXxyiuviFtvvVX069fPpvvdncmnT58+4vbbbzfmU1JSYvexQW3AATQRUT2j0+kqLS/Xo0cPsWHDBuPBRHp6utMPkbMln4sXLxqXmXFnPunp6cZ8HK2Xvfk4OuC1td1qev84umxIbetvNZFPWlpajfdre06ASg8glE4kSH9XrFhhsgykfFtH2JOPvH/ZO4PI0frY2xcczcfeWOBou9nL0Xzs7RO1vT7uzKewsLBG8pHXx96TAhK9Xi8MBoNxiTf5TM6ff/5ZtG3bVrz//vtCCOdm+dmTNArLXQAACGxJREFUT13FZayIiOoZlUplsrzcsmXLjMvLffPNNzh9+jRefPFFzJw5E2VlZW7N54UXXqjxfBx9OJ6t7fb444+jrKzM+NAnd9fHUbbk8/zzzxvzqe5BQc7kU9/620svvYRZs2a5PR95f5Me7mQL6QGE5g+llD8ACyh/6M9zzz1n8SFcrs7n2WefrfF87I0FjuZj71KdtbHdnnnmGWM+9saC2lifmsrn+eefr/H62BML5JRKJRQKBYYPH46PP/4YzZs3N77XrVs3BAQEGJfWc+aBrPbkU1fxKdxERPWU+RrtEyZMwPvvv4+QkBBcunQJK1ascMka7bUln+XLl9er+rDdmI+r8pE/QbykpARCCGi1Wrz99tv49ddfsWLFCqfrYU8+zq6WUFU+v/32W43UR56PO+tTU/unvtWnPufj6P4RFU+/7tGjR6XXk5OTERoaalyhQdq2NufjSbwCTURUj0k/TBEREfjPf/6DrKwsZGZmYs2aNbjhhhvqVT4dOnSokXzYbo7lU9/arS7mI10ZKigowFtvvYUtW7Zg9erV6Nixo8vyYD7Mh/nUznzkA1WDwWD899WrV/Hll19CrVaja9eulbatrfl4Eq9AExFdB9y5RjvzYT7Mp3bnI13l8fLygkajwWuvvYZ9+/Zh7dq1aNu2rUvyYD7Mh/nUjXyA/13tPnToENasWYOdO3di9erViI6OrpP51DQOoImI6jmdTod169Zhx44d2Lhxo9sO/pkP82E+tTMf6SqPWq1GVlYWtFot1q9fj9atW7ssD+bDfJhP3chH8sknn2D37t3Izs7G6tWr63w+NcodTyYjIqLapSbWaGc+zIf51O58zp07JxITE02eist8mA/zuT7zOXv2rFi1apVIS0urF/nUJIUQQnh6EE9ERERE7ldSUgJvb2/mw3yYD/OBwWCo9BTwupxPTeEAmoiIiIiIiMgG9edUABEREREREZEbcQBNREREREREZAMOoImIiIiIiIhswAE0ERERERERkQ04gCYiIiIiIiKyAQfQRERERERERDbgAJqIiIiIiIjIBhxAExEREREREdmAA2giIiIiIiIiG3AATURERERERGQDDqCJiIiIiIiIbMABNBEREREREZENOIAmIiIiIiIisgEH0EREREREREQ24ACaiIiIiIiIyAZqTxeAiIiIaqe0tDTcfvvtJq/5+PggMDAQzZs3R+fOnTFkyBDEx8d7qIREREQ1SyGEEJ4uBBEREdU+0gA6Pj4egwYNAgCUlpYiOzsbR44cwcmTJ6FSqfDQQw/hiSeegEKh8HCJiYiI3ItXoImIiKhK8fHxmDFjRqXX//nnHzz99NNYsmQJlEolZs2aVfOFIyIiqkG8B5qIiIgc0qVLF3z22WfQaDT49NNPcenSJQBAfn4+li5dirFjx6JXr15o3749evXqhaeffhoXLlwwSWPBggVISEjAtm3bLOaxevVqJCQkYMWKFe6uDhERUbU4gCYiIiKHNW3aFHfffTfKysqwc+dOAMDp06exYMECeHt7Y8CAARg/fjzat2+Pb7/9FiNGjEB6errx8yNGjIBKpcKGDRsspr9x40Z4eXlh8ODBNVIfIiKiqnAKNxERETnl5ptvxubNm3HkyBEAQPPmzfH7778jJCTEZLs///wTEydOxOLFi/H6668DAGJiYtC7d2/8+uuvSEtLQ1xcnHH7pKQkHD9+HHfffTdCQ0NrrD5ERETW8Ao0EREROSUqKgoAkJubCwAIDAysNHgGgO7du6NFixbYs2ePyeujRo2CEAKbNm0yeX39+vUAgJEjR7qh1ERERPbjFWgiIiJyiqUFPf766y+sXLkShw8fRm5uLnQ6nfE9Ly8vk2379OmDBg0a4KuvvsKMGTOgVCpRUlKCb7/9Fo0aNUL37t3dXgciIiJbcABNRERETsnMzAQAhIWFAQC2bduGJ554An5+fujVqxcaNmwIX19fKBQKfP311yb3QAOASqXC8OHDsWjRIuzevRt9+vTB9u3bce3aNUyePJnLYxERUa3BATQRERE55e+//wYA3HDDDQCARYsWwdvbG1999RWaNGlisu13331nMY0RI0Zg8eLF2LBhA/r06YONGzdCrVZjyJAhbi07ERGRPXgPNBERETns7Nmz2LZtGzQaDQYMGAAAuHDhApo3b15p8JyRkYHU1FSL6TRo0AC33nordu3ahf3792Pfvn249dZbER0d7e4qEBER2YwDaCIiInLIP//8g8mTJ6O0tBRTp041DnZjY2Nx/vx5ZGVlGbctKSnBK6+8YnIvtLlRo0ahrKwMs2bNghCCDw8jIqJah1O4iYiIqEoXLlzAwoULAQBlZWXIzs7G4cOHcfLkSahUKkyfPh2PPvqocftx48bhP//5DxITE3HnnXdCp9Nhz549EEKgdevWOHHihMV8+vTpg5iYGFy6dAnR0dG49dZba6R+REREtuIAmoiIiKp04cIFLFq0CADg4+ODwMBANGvWDI888giGDBmC+Ph4k+0feOABqNVqfPHFF1i/fj2CgoLQp08fPPnkk5g1a5bVfJRKJQYNGoQlS5Zg6NChUKlU7qwWERGR3RTC0toTRERERB4wZcoU7N69Gzt37kRcXJyni0NERGSC90ATERFRrZCSkoLdu3ejd+/eHDwTEVGtxCncRERE5FFbt27F2bNnsXnzZgDAI4884tkCERERWcEBNBEREXnU+vXr8c8//yA2NhZvvPEGbrzxRk8XiYiIyCLeA01ERERERERkA94DTURERERERGQDDqCJiIiIiIiIbMABNBEREREREZENOIAmIiIiIiIisgEH0EREREREREQ24ACaiIiIiIiIyAYcQBMRERERERHZgANoIiIiIiIiIhv8P67itGMzEVSiAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# group by the 'day' column and count the IDs for each day\n", + "result_d = df_timelines_pd.groupby(df_timelines_pd['created_at'].dt.day)['count_id'].count().reset_index()\n", + "\n", + "# plot the counts by day\n", + "plt.plot(result_d['created_at'], result_d['count_id'], color='teal', linewidth=2, linestyle='--', marker='o', markersize=8)\n", + "plt.title('Timeline Analysis over the Day of the Month', fontsize=18, fontweight='bold', pad=20)\n", + "plt.xlabel('Day', fontsize=14, labelpad=10)\n", + "plt.ylabel('Count', fontsize=14, labelpad=10)\n", + "plt.xticks(result_d['created_at'], result_d['created_at'], fontsize=12, rotation=45)\n", + "plt.yticks(fontsize=12)\n", + "plt.grid(axis='y', linestyle='--', alpha=0.7)\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2fc62798-c752-4b12-9242-0c47bc12bea2", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5d67dfad-c007-4fd3-9539-c541e94a0132", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"\\nimport pandas as pd\\nimport matplotlib.pyplot as plt\\n\\n# group by the 'day' column and count the IDs for each day\\nresult_d = df_timelines_pd.groupby(df_timelines_pd['created_at'])['count_id'].count().reset_index()\\n\\n# plot the counts by day\\nplt.plot(result_d['created_at'], result_d['count_id'], color='teal', linewidth=2, linestyle='--', marker='o', markersize=8)\\nplt.title('Timeline Analysis over the Day of the Month', fontsize=18, fontweight='bold', pad=20)\\nplt.xlabel('Day', fontsize=14, labelpad=10)\\nplt.ylabel('Count', fontsize=14, labelpad=10)\\nplt.xticks(result_d['created_at'], result_d['created_at'], fontsize=12, rotation=45)\\nplt.yticks(fontsize=12)\\nplt.grid(axis='y', linestyle='--', alpha=0.7)\\nplt.tight_layout()\\nplt.show()\\n\"" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"\"\"\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# group by the 'day' column and count the IDs for each day\n", + "result_d = df_timelines_pd.groupby(df_timelines_pd['created_at'])['count_id'].count().reset_index()\n", + "\n", + "# plot the counts by day\n", + "plt.plot(result_d['created_at'], result_d['count_id'], color='teal', linewidth=2, linestyle='--', marker='o', markersize=8)\n", + "plt.title('Timeline Analysis over the Day of the Month', fontsize=18, fontweight='bold', pad=20)\n", + "plt.xlabel('Day', fontsize=14, labelpad=10)\n", + "plt.ylabel('Count', fontsize=14, labelpad=10)\n", + "plt.xticks(result_d['created_at'], result_d['created_at'], fontsize=12, rotation=45)\n", + "plt.yticks(fontsize=12)\n", + "plt.grid(axis='y', linestyle='--', alpha=0.7)\n", + "plt.tight_layout()\n", + "plt.show()\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "576c2103-dcff-40ab-a2d7-f0e765b0a6e3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+-------------------+--------------------+\n", + "| id| created_at|\n", + "+-------------------+--------------------+\n", + "|1586426715760459778|Sat Oct 29 18:36:...|\n", + "|1586426719090589696|Sat Oct 29 18:36:...|\n", + "|1586426871524343814|Sat Oct 29 18:36:...|\n", + "|1586427143302443008|Sat Oct 29 18:38:...|\n", + "|1586427325264310273|Sat Oct 29 18:38:...|\n", + "+-------------------+--------------------+\n", + "only showing top 5 rows\n", + "\n" + ] + } + ], + "source": [ + "timeline_df = twt_df.select('id','created_at')\n", + "timeline_df.show(5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7ff306d0-1e7d-408c-a396-89c35ba346d7", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f9d719d8-9313-45e1-8a73-ed07363fc8d6", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "25e431f1-d45f-43b9-9b70-e7dd91d01649", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Identify Prolific Tweeters and Organizations.ipynb b/Identify Prolific Tweeters and Organizations.ipynb new file mode 100644 index 0000000..be7a5ea --- /dev/null +++ b/Identify Prolific Tweeters and Organizations.ipynb @@ -0,0 +1,2878 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "88c99f10-f533-434d-b7c6-76664bc33b26", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import shutil\n", + "from itertools import islice\n", + "import requests\n", + "\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "import findspark\n", + "findspark.init()\n", + "\n", + "from pyspark.sql import SparkSession\n", + "from pyspark.sql.functions import *\n", + "from pyspark.sql import functions as F\n", + "from pyspark.sql.types import *\n", + "\n", + "# Create spark_session\n", + "spark = SparkSession.builder.getOrCreate()\n", + "conf = spark.sparkContext._conf.setAll([('spark.executor.memory', '32g'), ('spark.app.name', 'Spark Updated Conf'), \n", + " ('spark.executor.cores', '32'), ('spark.cores.max', '32'), ('spark.driver.memory','32g')])\n", + "spark.sparkContext.getConf().getAll()\n", + "\n", + "from IPython.display import clear_output\n", + "clear_output(wait = False)\n", + "\n", + "spark.version\n", + "\n", + "import time\n", + "start_time = time.time()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "e0e7ae2e-3f04-4abc-b38c-02f9eb74339a", + "metadata": {}, + "outputs": [], + "source": [ + "from google.cloud import storage" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "99eeac58-1909-460d-b399-61a8f70e1830", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "23/03/09 05:16:20 WARN org.apache.spark.sql.catalyst.util.package: Truncated the string representation of a plan since it was too large. This behavior can be adjusted by setting 'spark.sql.debug.maxToStringFields'.\n", + "[Stage 1:=====================================================> (14 + 1) / 15]\r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 40.4 ms, sys: 7.99 ms, total: 48.4 ms\n", + "Wall time: 35.4 s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/plain": [ + "1005167" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%%time\n", + "df = spark.read.parquet('gs://msca-bdp-students-bucket/shared_data/kishorkumarreddy/df_coords_final_df/')\n", + "df.count()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "8c5939c1-919b-49f3-b7cb-2ccd6b698eaa", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
created_atidgeo_coordinatesuser_namefollowers_countverified_useruser_locationuser_descriptionreply_countretweet_countretweeted_statustweet_texttext
0Sat Oct 29 18:36:18 +0000 20221586426715760459778NoneTitanUp Ty2256FalseNone#LGM #TITANS #GBO🍊 #FJB #NJ #USA 🇺🇸551(None, Sat Oct 29 13:22:46 +0000 2022, [0, 82]...your current sec college football qbr leaders....RT @JWPSports: Your current SEC College Footba...
1Sat Oct 29 18:36:18 +0000 20221586426719090589696NoneSickYooo88FalseNone..3168(None, Sun Feb 13 19:58:23 +0000 2022, [0, 140...latina baddie wanted to suck me off during a p...RT @pxrnstachee: Latina baddie wanted to suck ...
2Sat Oct 29 18:36:55 +0000 20221586426871524343814NoneSaturn883FalseAmerica#براندازم #نه_به_جمهوری_اسلامی07(None, Sat Oct 29 18:23:54 +0000 2022, None, (...today’s peaceful student protests of #universi...RT @iranhr: Today’s peaceful student protests ...
3Sat Oct 29 18:38:00 +0000 20221586427143302443008None💙KOHAKU225💙127FalseBaton Rouge, LANone316(None, Fri Oct 28 23:51:52 +0000 2022, [0, 140...first 100 follows gets a surprise \\nopen dms\\n...RT @freaky_central2: First 100 follows gets a ...
4Sat Oct 29 18:38:43 +0000 20221586427325264310273Nonemaoooo6FalseNoneNone210(None, Sat Oct 29 18:23:54 +0000 2022, None, (...today’s peaceful student protests of #universi...RT @iranhr: Today’s peaceful student protests ...
\n", + "
" + ], + "text/plain": [ + " created_at id geo_coordinates \\\n", + "0 Sat Oct 29 18:36:18 +0000 2022 1586426715760459778 None \n", + "1 Sat Oct 29 18:36:18 +0000 2022 1586426719090589696 None \n", + "2 Sat Oct 29 18:36:55 +0000 2022 1586426871524343814 None \n", + "3 Sat Oct 29 18:38:00 +0000 2022 1586427143302443008 None \n", + "4 Sat Oct 29 18:38:43 +0000 2022 1586427325264310273 None \n", + "\n", + " user_name followers_count verified_user user_location \\\n", + "0 TitanUp Ty 2256 False None \n", + "1 SickYooo 88 False None \n", + "2 Saturn 883 False America \n", + "3 💙KOHAKU225💙 127 False Baton Rouge, LA \n", + "4 maoooo 6 False None \n", + "\n", + " user_description reply_count retweet_count \\\n", + "0 #LGM #TITANS #GBO🍊 #FJB #NJ #USA 🇺🇸 5 51 \n", + "1 .. 3 168 \n", + "2 #براندازم #نه_به_جمهوری_اسلامی 0 7 \n", + "3 None 3 16 \n", + "4 None 2 10 \n", + "\n", + " retweeted_status \\\n", + "0 (None, Sat Oct 29 13:22:46 +0000 2022, [0, 82]... \n", + "1 (None, Sun Feb 13 19:58:23 +0000 2022, [0, 140... \n", + "2 (None, Sat Oct 29 18:23:54 +0000 2022, None, (... \n", + "3 (None, Fri Oct 28 23:51:52 +0000 2022, [0, 140... \n", + "4 (None, Sat Oct 29 18:23:54 +0000 2022, None, (... \n", + "\n", + " tweet_text \\\n", + "0 your current sec college football qbr leaders.... \n", + "1 latina baddie wanted to suck me off during a p... \n", + "2 today’s peaceful student protests of #universi... \n", + "3 first 100 follows gets a surprise \\nopen dms\\n... \n", + "4 today’s peaceful student protests of #universi... \n", + "\n", + " text \n", + "0 RT @JWPSports: Your current SEC College Footba... \n", + "1 RT @pxrnstachee: Latina baddie wanted to suck ... \n", + "2 RT @iranhr: Today’s peaceful student protests ... \n", + "3 RT @freaky_central2: First 100 follows gets a ... \n", + "4 RT @iranhr: Today’s peaceful student protests ... " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.limit(5).toPandas()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "c2e591f7-32e5-4cb8-b3c7-275a25f0b51e", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Stage 5:> (0 + 1) / 1]\r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+-------------------+---------------+--------------------+---------------+-------------+--------------------+--------------------+-----------+-------------+--------------------+--------------------+--------------------+\n", + "| created_at| id|geo_coordinates| user_name|followers_count|verified_user| user_location| user_description|reply_count|retweet_count| retweeted_status| tweet_text| text|\n", + "+--------------------+-------------------+---------------+--------------------+---------------+-------------+--------------------+--------------------+-----------+-------------+--------------------+--------------------+--------------------+\n", + "|Sat Oct 29 18:36:...|1586426715760459778| null| TitanUp Ty| 2256| false| null|#LGM #TITANS #GBO...| 5| 51|{null, Sat Oct 29...|your current sec ...|RT @JWPSports: Yo...|\n", + "|Sat Oct 29 18:36:...|1586426719090589696| null| SickYooo| 88| false| null| ..| 3| 168|{null, Sun Feb 13...|latina baddie wan...|RT @pxrnstachee: ...|\n", + "|Sat Oct 29 18:36:...|1586426871524343814| null| Saturn| 883| false| America|#براندازم #نه_به_...| 0| 7|{null, Sat Oct 29...|today’s peaceful ...|RT @iranhr: Today...|\n", + "|Sat Oct 29 18:38:...|1586427143302443008| null| 💙KOHAKU225💙| 127| false| Baton Rouge, LA| null| 3| 16|{null, Fri Oct 28...|first 100 follows...|RT @freaky_centra...|\n", + "|Sat Oct 29 18:38:...|1586427325264310273| null| maoooo| 6| false| null| null| 2| 10|{null, Sat Oct 29...|today’s peaceful ...|RT @iranhr: Today...|\n", + "|Sat Oct 29 18:38:...|1586427331161518080| null| Hashtag| 4| false| Lahore|Virtual Universit...| 0| 1|{null, Sat Oct 29...|i was thinking of...|RT @IamUsmanAQ: I...|\n", + "|Sat Oct 29 18:38:...|1586427333426061312| null| Shehr Bano| 22| false| null| null| 0| 2|{null, Sat Oct 29...|i was thinking of...|RT @IamUsmanAQ: I...|\n", + "|Sat Oct 29 18:38:...|1586427341244231681| null| Parent Security| 286| false| null|#Parents who want...| null| null| null|#schoolsafety | m...|#schoolsafety | M...|\n", + "|Sat Oct 29 18:38:...|1586427362228436996| null| Get That Right| 802| false| Global|Helping You Know ...| null| null| null|safety at school:...|Safety at School:...|\n", + "|Sat Oct 29 18:39:...|1586427427798265856| null|Alex Bellars ☮️🇺...| 6326| false| European Union|Born 327.34 CO2 p...| 6| 55|{null, Sat Oct 29...|do you expect sta...|RT @PoliticsPolls...|\n", + "|Sat Oct 29 18:39:...|1586427633432150016| null| master| 525| false| Toronto, Ontario|Big hairy dom top...| 0| 28|{null, Sun Sep 19...|i know he might n...|RT @Bros_WithPhon...|\n", + "|Sat Oct 29 18:39:...|1586427646329487361| null| John Benjamin| 3| false| null| null| 0| 63|{null, Wed Oct 26...|that's a reason t...|RT @greenylust: T...|\n", + "|Sat Oct 29 18:40:...|1586427697382625282| null|#Eric #8#21#1980 ...| 22| false|#X #Moments Stay ...|I 'amErican , who...| null| null| null|#1980-1998 never ...|#1980-1998 never ...|\n", + "|Sat Oct 29 18:40:...|1586427724033576960| null|💔Iranian Freedom...| 438| false| null|از شرق تا غرب، از...| 2| 12|{null, Sat Oct 29...|today’s peaceful ...|RT @iranhr: Today...|\n", + "|Sat Oct 29 18:40:...|1586427725392318465| null| Mazhar khan| 0| false| null| null| 1| 3|{null, Sat Oct 29...|i was thinking of...|RT @IamUsmanAQ: I...|\n", + "|Sat Oct 29 18:40:...|1586427777787777024| null| master| 525| false| Toronto, Ontario|Big hairy dom top...| 0| 5|{null, Sun Sep 12...|just started coll...|RT @Bros_WithPhon...|\n", + "|Sat Oct 29 18:40:...|1586427862793744384| null| Erynn Watson| 1195| false| Alberta, Canada|Fan of evidence b...| 0| 2|{null, Sat Oct 29...|my school haven’t...|RT @karleeh26: My...|\n", + "|Sat Oct 29 18:40:...|1586427862323585024| null|Sunil Chandra Hansda| 0| false| null| null| null| null| null|i've been complet...|I've been complet...|\n", + "|Thu May 26 10:31:...|1529772188341084163| null| Alberto Arellano| 16| false| null| null| 4| 196|{null, Fri May 20...|happy friday #pyt...|RT @kittenlove420...|\n", + "|Thu May 26 10:32:...|1529772343039561728| null| Celestial Sojourner| 58954| false|FL Cong Dist 8 Tr...|Former RN #Resist...| null| null| null|#uvaldemassacre #...|#UvaldeMassacre #...|\n", + "+--------------------+-------------------+---------------+--------------------+---------------+-------------+--------------------+--------------------+-----------+-------------+--------------------+--------------------+--------------------+\n", + "only showing top 20 rows\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "df.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "00ba8cf7-c026-49f8-8a5b-21429190da52", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "#To get the original tweets, we filter the records where the retweet status is null\n", + "count_overall = df.count()\n", + "origina_tw_cnt = df.filter('retweeted_status is null').count()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "7a6ce11a-92e4-41e2-b4a8-3eecb585e1e2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Count of total tweets before filtering: 1005167\n", + "Count of the original tweets: 352608\n" + ] + } + ], + "source": [ + "print('Count of total tweets before filtering:', count_overall)\n", + "print('Count of the original tweets:', origina_tw_cnt)" + ] + }, + { + "cell_type": "markdown", + "id": "aa49a425-2cf2-4e84-906e-739b2baa7b80", + "metadata": {}, + "source": [ + "# Most Prolific (Influential Tweeters) Using the Count of Original Tweets & Their Followers" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "a6e8bfd9-adc6-4acb-ab68-046fea70adec", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "original_tweet_data = df.filter(\"retweeted_status is null and verified_user == True\")\n", + "print(type(original_tweet_data))\n", + "original_df = original_tweet_data.groupby(\"user_name\").agg(F.count('*').alias('count_of_tweets'))\\\n", + " .select(['user_name','count_of_tweets'])\\\n", + " .orderBy('count_of_tweets', ascending = False).limit(20).toPandas()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "ea00fd0c-cc0a-45a3-90ec-987ac2c4ecf7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
user_namecount_of_tweets
0The Highland Council284
1Brendan Schneider164
2The Tribune132
3News Ghana115
4Rising Kashmir115
5NASN, Inc.110
6Free Press Journal110
7CapricornFM News107
8India.com95
9DNA72
10TIMES NOW68
11U.S. News Education67
12SpringfieldAthletics64
13Elizabethtown College60
14Montgomery College57
15EdSurge54
16Mirror Now52
17ThePapare.com50
18Lori Lite49
19National Education Union45
\n", + "
" + ], + "text/plain": [ + " user_name count_of_tweets\n", + "0 The Highland Council 284\n", + "1 Brendan Schneider 164\n", + "2 The Tribune 132\n", + "3 News Ghana 115\n", + "4 Rising Kashmir 115\n", + "5 NASN, Inc. 110\n", + "6 Free Press Journal 110\n", + "7 CapricornFM News 107\n", + "8 India.com 95\n", + "9 DNA 72\n", + "10 TIMES NOW 68\n", + "11 U.S. News Education 67\n", + "12 SpringfieldAthletics 64\n", + "13 Elizabethtown College 60\n", + "14 Montgomery College 57\n", + "15 EdSurge 54\n", + "16 Mirror Now 52\n", + "17 ThePapare.com 50\n", + "18 Lori Lite 49\n", + "19 National Education Union 45" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "original_df" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "15ab2217-14f6-4adb-9bf5-2cca6282eaee", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/plain": [ + "1870" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "prolific_twitterers = list(original_df['user_name'].values)\n", + "fil_str = \"user_name == '\" + prolific_twitterers[0] + \"'\"\n", + "for i in prolific_twitterers[1:]:\n", + " fil_str += (\" or user_name == '\" + i + \"'\")\n", + " \n", + "fam_tws = original_tweet_data.filter(fil_str)\n", + "fam_tws.count()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "a64ebe46-20be-4492-8b90-a2069e24fe07", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
created_atidgeo_coordinatesuser_namefollowers_countverified_useruser_locationuser_descriptionreply_countretweet_countretweeted_statustweet_texttext
0Sun Sep 18 04:36:06 +0000 20221571357370151845888NoneIndia.com28508TrueIndiaFollow http://india.com for breaking news from...NaNNaNNonemassive protests emerge in #chandigarhuniversi...Massive protests emerge in #chandigarhuniversi...
1Wed Feb 01 08:40:21 +0000 20231620703591039385601NoneNational Education Union88592TrueUnited KingdomThe National Education Union represents the ma...NaNNaNNoneaccording to @mumsnettowers the majority of pa...According to @MumsnetTowers the majority of pa...
2Tue Jan 03 13:28:01 +0000 20231610266733780283398NoneIndia.com28984TrueIndiaFollow http://india.com for breaking news from...NaNNaNNone#schoolclosingnews | jharkhand declares school...#SchoolClosingNews | Jharkhand Declares School...
3Tue Aug 23 17:43:03 +0000 20221562133328257499136NoneNASN, Inc.10200TrueSilver Spring, Maryland, USAThe mission of the National Association of Sch...NaNNaNNonecheck out this opinion piece @donnamazyck, nas...Check out this opinion piece @DonnaMazyck, NAS...
4Tue Aug 23 17:45:01 +0000 20221562133825584599040NoneEdSurge160563TruePortland, OREdSurge covers and connects the people, ideas ...NaNNaNNonea new study shows digital systems report stude...A new study shows digital systems report stude...
\n", + "
" + ], + "text/plain": [ + " created_at id geo_coordinates \\\n", + "0 Sun Sep 18 04:36:06 +0000 2022 1571357370151845888 None \n", + "1 Wed Feb 01 08:40:21 +0000 2023 1620703591039385601 None \n", + "2 Tue Jan 03 13:28:01 +0000 2023 1610266733780283398 None \n", + "3 Tue Aug 23 17:43:03 +0000 2022 1562133328257499136 None \n", + "4 Tue Aug 23 17:45:01 +0000 2022 1562133825584599040 None \n", + "\n", + " user_name followers_count verified_user \\\n", + "0 India.com 28508 True \n", + "1 National Education Union 88592 True \n", + "2 India.com 28984 True \n", + "3 NASN, Inc. 10200 True \n", + "4 EdSurge 160563 True \n", + "\n", + " user_location \\\n", + "0 India \n", + "1 United Kingdom \n", + "2 India \n", + "3 Silver Spring, Maryland, USA \n", + "4 Portland, OR \n", + "\n", + " user_description reply_count \\\n", + "0 Follow http://india.com for breaking news from... NaN \n", + "1 The National Education Union represents the ma... NaN \n", + "2 Follow http://india.com for breaking news from... NaN \n", + "3 The mission of the National Association of Sch... NaN \n", + "4 EdSurge covers and connects the people, ideas ... NaN \n", + "\n", + " retweet_count retweeted_status \\\n", + "0 NaN None \n", + "1 NaN None \n", + "2 NaN None \n", + "3 NaN None \n", + "4 NaN None \n", + "\n", + " tweet_text \\\n", + "0 massive protests emerge in #chandigarhuniversi... \n", + "1 according to @mumsnettowers the majority of pa... \n", + "2 #schoolclosingnews | jharkhand declares school... \n", + "3 check out this opinion piece @donnamazyck, nas... \n", + "4 a new study shows digital systems report stude... \n", + "\n", + " text \n", + "0 Massive protests emerge in #chandigarhuniversi... \n", + "1 According to @MumsnetTowers the majority of pa... \n", + "2 #SchoolClosingNews | Jharkhand Declares School... \n", + "3 Check out this opinion piece @DonnaMazyck, NAS... \n", + "4 A new study shows digital systems report stude... " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#We now have the data to extract the prolific tweeters based on how many times their tweets have been retweeted\n", + "fam_tws_pd = fam_tws.toPandas()\n", + "fam_tws_pd.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "97dbcf7c-7fa2-4dff-92bd-937e1f824bf5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 1870 entries, 0 to 1869\n", + "Data columns (total 13 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 created_at 1870 non-null object \n", + " 1 id 1870 non-null int64 \n", + " 2 geo_coordinates 0 non-null object \n", + " 3 user_name 1870 non-null object \n", + " 4 followers_count 1870 non-null int64 \n", + " 5 verified_user 1870 non-null bool \n", + " 6 user_location 1804 non-null object \n", + " 7 user_description 1870 non-null object \n", + " 8 reply_count 0 non-null float64\n", + " 9 retweet_count 0 non-null float64\n", + " 10 retweeted_status 0 non-null object \n", + " 11 tweet_text 1870 non-null object \n", + " 12 text 1870 non-null object \n", + "dtypes: bool(1), float64(2), int64(2), object(8)\n", + "memory usage: 177.3+ KB\n" + ] + } + ], + "source": [ + "fam_tws_pd.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "85f9a208-6576-4c9b-9860-a534562a74ef", + "metadata": {}, + "outputs": [], + "source": [ + "fam_tws.createOrReplaceTempView(\"fam_tws\")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "c03a54d1-6ad8-44e5-854e-6fa48eb4caa1", + "metadata": {}, + "outputs": [], + "source": [ + "#We can select the required fields to get the prolific users\n", + "#twt_text_info = fam_tws_pd[['user_name','text', 'tweet_text']]\n", + "#twt_text_info.head()\n", + "\n", + "query_txt_info = '''\n", + "select user_name,\n", + "count(text) as number_of_tweets,\n", + "sum(followers_count) as followers_count\n", + "from fam_tws\n", + "group by user_name\n", + "order by followers_count desc'''\n", + "txt_info = spark.sql(query_txt_info)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "357ffef9-9242-4e83-a06a-6a9cf8665b59", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Stage 19:====================================================> (14 + 1) / 15]\r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+----------------+---------------+\n", + "| user_name|number_of_tweets|followers_count|\n", + "+--------------------+----------------+---------------+\n", + "| TIMES NOW| 68| 698318444|\n", + "| DNA| 72| 164936270|\n", + "| Rising Kashmir| 115| 25537739|\n", + "| U.S. News Education| 67| 22136817|\n", + "| The Tribune| 132| 21082137|\n", + "| EdSurge| 54| 8650484|\n", + "|The Highland Council| 284| 8519086|\n", + "| Mirror Now| 52| 6023266|\n", + "| CapricornFM News| 107| 5002078|\n", + "| News Ghana| 115| 4550812|\n", + "+--------------------+----------------+---------------+\n", + "only showing top 10 rows\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "#We can see that the tweets are original\n", + "txt_info.show(10)" + ] + }, + { + "cell_type": "markdown", + "id": "bd66fbd2-194f-4ada-a9e3-c725a681b462", + "metadata": {}, + "source": [ + "# Prolific/ Most Influential Twitterers based on the times their tweets have been retweeted" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "93553b8d-72d7-4d9d-83f8-6b89c54ce504", + "metadata": {}, + "outputs": [], + "source": [ + "rtwt_df = df.filter(\"retweeted_status is not null\")" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "d900ccce-b1db-44d2-a901-cbdcc85bf817", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+-------------------+---------------+--------------------+---------------+-------------+----------------+--------------------+-----------+-------------+--------------------+--------------------+--------------------+\n", + "| created_at| id|geo_coordinates| user_name|followers_count|verified_user| user_location| user_description|reply_count|retweet_count| retweeted_status| tweet_text| text|\n", + "+--------------------+-------------------+---------------+--------------------+---------------+-------------+----------------+--------------------+-----------+-------------+--------------------+--------------------+--------------------+\n", + "|Sat Oct 29 18:36:...|1586426715760459778| null| TitanUp Ty| 2256| false| null|#LGM #TITANS #GBO...| 5| 51|{null, Sat Oct 29...|your current sec ...|RT @JWPSports: Yo...|\n", + "|Sat Oct 29 18:36:...|1586426719090589696| null| SickYooo| 88| false| null| ..| 3| 168|{null, Sun Feb 13...|latina baddie wan...|RT @pxrnstachee: ...|\n", + "|Sat Oct 29 18:36:...|1586426871524343814| null| Saturn| 883| false| America|#براندازم #نه_به_...| 0| 7|{null, Sat Oct 29...|today’s peaceful ...|RT @iranhr: Today...|\n", + "|Sat Oct 29 18:38:...|1586427143302443008| null| 💙KOHAKU225💙| 127| false| Baton Rouge, LA| null| 3| 16|{null, Fri Oct 28...|first 100 follows...|RT @freaky_centra...|\n", + "|Sat Oct 29 18:38:...|1586427325264310273| null| maoooo| 6| false| null| null| 2| 10|{null, Sat Oct 29...|today’s peaceful ...|RT @iranhr: Today...|\n", + "|Sat Oct 29 18:38:...|1586427331161518080| null| Hashtag| 4| false| Lahore|Virtual Universit...| 0| 1|{null, Sat Oct 29...|i was thinking of...|RT @IamUsmanAQ: I...|\n", + "|Sat Oct 29 18:38:...|1586427333426061312| null| Shehr Bano| 22| false| null| null| 0| 2|{null, Sat Oct 29...|i was thinking of...|RT @IamUsmanAQ: I...|\n", + "|Sat Oct 29 18:39:...|1586427427798265856| null|Alex Bellars ☮️🇺...| 6326| false| European Union|Born 327.34 CO2 p...| 6| 55|{null, Sat Oct 29...|do you expect sta...|RT @PoliticsPolls...|\n", + "|Sat Oct 29 18:39:...|1586427633432150016| null| master| 525| false|Toronto, Ontario|Big hairy dom top...| 0| 28|{null, Sun Sep 19...|i know he might n...|RT @Bros_WithPhon...|\n", + "|Sat Oct 29 18:39:...|1586427646329487361| null| John Benjamin| 3| false| null| null| 0| 63|{null, Wed Oct 26...|that's a reason t...|RT @greenylust: T...|\n", + "|Sat Oct 29 18:40:...|1586427724033576960| null|💔Iranian Freedom...| 438| false| null|از شرق تا غرب، از...| 2| 12|{null, Sat Oct 29...|today’s peaceful ...|RT @iranhr: Today...|\n", + "|Sat Oct 29 18:40:...|1586427725392318465| null| Mazhar khan| 0| false| null| null| 1| 3|{null, Sat Oct 29...|i was thinking of...|RT @IamUsmanAQ: I...|\n", + "|Sat Oct 29 18:40:...|1586427777787777024| null| master| 525| false|Toronto, Ontario|Big hairy dom top...| 0| 5|{null, Sun Sep 12...|just started coll...|RT @Bros_WithPhon...|\n", + "|Sat Oct 29 18:40:...|1586427862793744384| null| Erynn Watson| 1195| false| Alberta, Canada|Fan of evidence b...| 0| 2|{null, Sat Oct 29...|my school haven’t...|RT @karleeh26: My...|\n", + "|Thu May 26 10:31:...|1529772188341084163| null| Alberto Arellano| 16| false| null| null| 4| 196|{null, Fri May 20...|happy friday #pyt...|RT @kittenlove420...|\n", + "|Thu May 26 10:32:...|1529772377890033664| null| k$wuave| 344| false| null|just a freaky ass...| 11| 643|{null, Fri May 20...|student teacher❤️...|RT @Lordy20Oh: St...|\n", + "|Thu May 26 10:32:...|1529772557645365249| null| Common Seas| 4047| false|Bristol, England|📢 #PlasticIsInO...| 1| 19|{null, Mon May 23...|everything you ne...|RT @wodforschools...|\n", + "|Thu May 26 10:33:...|1529772669691994112| null| Nicolas| 4218| false| world |#FreeRaif #HumanR...| 1| 9|{null, Thu May 26...|brave afghan wome...|RT @WazhmaTokhi: ...|\n", + "|Thu May 26 10:33:...|1529772713602064385| null| Tomy Verreault| 316| false| La voie lactée.|Contre le radical...| 0| 1|{null, Thu May 26...|this is what the ...|RT @jamesvgingeri...|\n", + "|Thu May 26 10:34:...|1529772895400083463| null| ali 😈🍆| 11| false| null| null| 1| 19|{null, Thu Apr 07...|frat party turned...|RT @str8guyclips:...|\n", + "+--------------------+-------------------+---------------+--------------------+---------------+-------------+----------------+--------------------+-----------+-------------+--------------------+--------------------+--------------------+\n", + "only showing top 20 rows\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "rtwt_df.show()\n", + "rtwt_df = rtwt_df.withColumn(\"tweet_text\", F.lower(F.col(\"tweet_text\")))\\\n", + " .select(['text', 'tweet_text', 'retweet_count', 'user_name','retweeted_status'])\\\n", + " .groupby(['user_name'])\\\n", + " .agg((avg('retweet_count')).alias('average_retweets_per_tweet')).toPandas()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2bbe3e19-3989-4108-a2dc-5dcd2c6fe75f", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "8aab8e88-eb1c-4396-8373-fe4e4a2ba276", + "metadata": {}, + "outputs": [], + "source": [ + "tw_users_t = original_df" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "7864bc87-2278-4217-8c6c-cd283356dcb7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
user_namecount_of_tweets
0The Highland Council284
1Brendan Schneider164
2The Tribune132
3News Ghana115
4Rising Kashmir115
\n", + "
" + ], + "text/plain": [ + " user_name count_of_tweets\n", + "0 The Highland Council 284\n", + "1 Brendan Schneider 164\n", + "2 The Tribune 132\n", + "3 News Ghana 115\n", + "4 Rising Kashmir 115" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "20" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(tw_users_t.sort_values(by = 'count_of_tweets', ascending = False).head())\n", + "display(len(tw_users_t))" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "d71f3d56-4646-4454-819a-c8fbf7467fb5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
user_nameaverage_retweets_per_tweet
127425The Mablest of Donkeys110384.0
275927🇺🇦 Mike Mozart, 🎨 Pop Artist MiMo110382.0
95686김윌셔110200.0
106537Abraham Akuei110168.0
218737Valerie Sielert110090.0
\n", + "
" + ], + "text/plain": [ + " user_name average_retweets_per_tweet\n", + "127425 The Mablest of Donkeys 110384.0\n", + "275927 🇺🇦 Mike Mozart, 🎨 Pop Artist MiMo 110382.0\n", + "95686 김윌셔 110200.0\n", + "106537 Abraham Akuei 110168.0\n", + "218737 Valerie Sielert 110090.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "20" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(rtwt_df.sort_values(by = 'average_retweets_per_tweet', ascending = False).head())\n", + "display(len(tw_users_t))" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "4db7947e-dc32-476f-84bd-566fd58bd4c1", + "metadata": {}, + "outputs": [], + "source": [ + "#Now based on the count of tweets and their average retweets, we can merge the above dfs and get the order of prolific tweets based on retweets\n", + "rt_users_t = pd.merge(left = tw_users_t, right = rtwt_df, left_on = 'user_name', right_on = 'user_name', how = 'left')" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "c04e658d-58be-4a8a-a382-dfac41b706c8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
user_namecount_of_tweetsaverage_retweets_per_tweet
18Lori Lite496.294118
19National Education Union454.000000
1Brendan Schneider1643.200000
10TIMES NOW682.000000
14Montgomery College571.428571
5NASN, Inc.1101.142857
2The Tribune1321.000000
3News Ghana1151.000000
6Free Press Journal1101.000000
9DNA721.000000
\n", + "
" + ], + "text/plain": [ + " user_name count_of_tweets average_retweets_per_tweet\n", + "18 Lori Lite 49 6.294118\n", + "19 National Education Union 45 4.000000\n", + "1 Brendan Schneider 164 3.200000\n", + "10 TIMES NOW 68 2.000000\n", + "14 Montgomery College 57 1.428571\n", + "5 NASN, Inc. 110 1.142857\n", + "2 The Tribune 132 1.000000\n", + "3 News Ghana 115 1.000000\n", + "6 Free Press Journal 110 1.000000\n", + "9 DNA 72 1.000000" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rt_users_t[['user_name', 'count_of_tweets','average_retweets_per_tweet']].sort_values(by = 'average_retweets_per_tweet', ascending = False).head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "b94421c6-a4d6-479f-afe3-4d9ca02a90d1", + "metadata": {}, + "outputs": [], + "source": [ + "#rt_users_t[['user_name', 'count_of_tweets','average_retweets_per_tweet']].sort_values(by = 'average_retweets_per_tweet', ascending = False).head(10)\n", + "s_rt_users_t = spark.createDataFrame(rt_users_t)\n", + "s_rt_users_t.createOrReplaceTempView(\"s_rt_users_t\")" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "acb26bf9-f6d1-4fc3-bec7-67b2bec9a2d7", + "metadata": {}, + "outputs": [], + "source": [ + "query = '''\n", + "select user_name, \n", + "round((count_of_tweets*average_retweets_per_tweet),2) as tweet_rt_rate\n", + "from s_rt_users_t\n", + "where round((count_of_tweets*average_retweets_per_tweet),2)>=0\n", + "order by tweet_rt_rate desc'''\n", + "tw_qy = spark.sql(query)\n", + "tw_qy = tw_qy.dropna()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "803326bd-2f51-4eea-be3a-86b05d3777a9", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Stage 26:==================================> (6 + 4) / 10]\r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+-------------+\n", + "| user_name|tweet_rt_rate|\n", + "+--------------------+-------------+\n", + "| Brendan Schneider| 524.8|\n", + "| Lori Lite| 308.41|\n", + "|National Educatio...| 180.0|\n", + "| TIMES NOW| 136.0|\n", + "| The Tribune| 132.0|\n", + "| NASN, Inc.| 125.71|\n", + "| News Ghana| 115.0|\n", + "| Free Press Journal| 110.0|\n", + "| Montgomery College| 81.43|\n", + "| DNA| 72.0|\n", + "| ThePapare.com| 50.0|\n", + "+--------------------+-------------+\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "#The tweet rate calculated here is based on the count of tweets and average retweets per tweet\n", + "tw_qy.show()" + ] + }, + { + "cell_type": "markdown", + "id": "8efbb496-1be2-4283-8302-b2df8520ccbd", + "metadata": {}, + "source": [ + "# Who are these Twitterers(government entities / universities / schools / nonprofit organizations / news outlets / social media influencers / someone else)?" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "09e4951c-8110-4d26-8b28-e64c3e75a495", + "metadata": {}, + "outputs": [], + "source": [ + "### To find this out, we can group the users the users by using their descriptions\n", + "#!break!" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "54e98e61-061a-4c32-a531-03d778b92cc2", + "metadata": {}, + "outputs": [], + "source": [ + "entity_extraction = df.select(['user_name', 'user_description', 'followers_count', 'id'])" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "c6af4da3-a39c-4863-b4a5-8c65587266f7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
user_nameuser_description
0TitanUp Ty#LGM #TITANS #GBO🍊 #FJB #NJ #USA 🇺🇸
1SickYooo..
2Saturn#براندازم #نه_به_جمهوری_اسلامی
3💙KOHAKU225💙None
4maooooNone
5HashtagVirtual University Student
6Shehr BanoNone
7Parent Security#Parents who want to keep their #children #saf...
8Get That RightHelping You Know Things Better
9Alex Bellars ☮️🇺🇦🇪🇺🏴󠁧󠁢󠁷󠁬󠁳󠁿Born 327.34 CO2 ppm/Fre, Ger, Hist & PE teache...
10masterBig hairy dom top in the city. Message me for ...
11John BenjaminNone
12#Eric #8#21#1980 #SCENERIOS #Date #Art #E.CI 'amErican , who is Naturally Born, and is Up...
13💔Iranian Freedom Fighter♀️🏳️‍🌈از شرق تا غرب، از شمال تا جنوب، از کردستان تا ...
14Mazhar khanNone
15masterBig hairy dom top in the city. Message me for ...
16Erynn WatsonFan of evidence based decision making and figu...
17Sunil Chandra HansdaNone
18Alberto ArellanoNone
19Celestial SojournerFormer RN #Resistance #Antifascist \\n#NowItsAW...
20Celestial SojournerFormer RN #Resistance #Antifascist \\n#NowItsAW...
21k$wuavejust a freaky ass page🥴💦| 18+ | HOF Retweeter
22Al Batinah International School (ABIS)A great IB International School in Sohar, Oman...
23Arnold HouseNone
24imovesWe're on a mission to get all children active ...
25VISBEAR안녕하세요! ✋ Weverse- 일곱남자🎤 I’m with Garam.
26Common Seas📢 #PlasticIsInOurBlood. Help us raise the ala...
27Nicolas#FreeRaif #HumanRights #antiraciste aime l'hum...
28بركانحمم تغلي
29Tomy VerreaultContre le radicalisme libertaire ! Anti-conspi...
30Carisa is Educating for GoodCoauthor 126 Falsehoods We Believe About Educa...
31DC East KamengOfficial Twitter account of the Deputy Commiss...
32ali 😈🍆None
33PulpNews CrimeThe Fastest Crime News Updates on the Planet!
34SDBEThe latest updates from the Salisbury Diocesan...
35King'sElyRowParentsThis is run by and for parents of King's Ely r...
36Ray AdamsFound #OFP on the #HedonicTreadmill trying not...
37-None
38.None
39Ravi BhartiEngineer
\n", + "
" + ], + "text/plain": [ + " user_name \\\n", + "0 TitanUp Ty \n", + "1 SickYooo \n", + "2 Saturn \n", + "3 💙KOHAKU225💙 \n", + "4 maoooo \n", + "5 Hashtag \n", + "6 Shehr Bano \n", + "7 Parent Security \n", + "8 Get That Right \n", + "9 Alex Bellars ☮️🇺🇦🇪🇺🏴󠁧󠁢󠁷󠁬󠁳󠁿 \n", + "10 master \n", + "11 John Benjamin \n", + "12 #Eric #8#21#1980 #SCENERIOS #Date #Art #E.C \n", + "13 💔Iranian Freedom Fighter♀️🏳️‍🌈 \n", + "14 Mazhar khan \n", + "15 master \n", + "16 Erynn Watson \n", + "17 Sunil Chandra Hansda \n", + "18 Alberto Arellano \n", + "19 Celestial Sojourner \n", + "20 Celestial Sojourner \n", + "21 k$wuave \n", + "22 Al Batinah International School (ABIS) \n", + "23 Arnold House \n", + "24 imoves \n", + "25 VISBEAR \n", + "26 Common Seas \n", + "27 Nicolas \n", + "28 بركان \n", + "29 Tomy Verreault \n", + "30 Carisa is Educating for Good \n", + "31 DC East Kameng \n", + "32 ali 😈🍆 \n", + "33 PulpNews Crime \n", + "34 SDBE \n", + "35 King'sElyRowParents \n", + "36 Ray Adams \n", + "37 - \n", + "38 . \n", + "39 Ravi Bharti \n", + "\n", + " user_description \n", + "0 #LGM #TITANS #GBO🍊 #FJB #NJ #USA 🇺🇸 \n", + "1 .. \n", + "2 #براندازم #نه_به_جمهوری_اسلامی \n", + "3 None \n", + "4 None \n", + "5 Virtual University Student \n", + "6 None \n", + "7 #Parents who want to keep their #children #saf... \n", + "8 Helping You Know Things Better \n", + "9 Born 327.34 CO2 ppm/Fre, Ger, Hist & PE teache... \n", + "10 Big hairy dom top in the city. Message me for ... \n", + "11 None \n", + "12 I 'amErican , who is Naturally Born, and is Up... \n", + "13 از شرق تا غرب، از شمال تا جنوب، از کردستان تا ... \n", + "14 None \n", + "15 Big hairy dom top in the city. Message me for ... \n", + "16 Fan of evidence based decision making and figu... \n", + "17 None \n", + "18 None \n", + "19 Former RN #Resistance #Antifascist \\n#NowItsAW... \n", + "20 Former RN #Resistance #Antifascist \\n#NowItsAW... \n", + "21 just a freaky ass page🥴💦| 18+ | HOF Retweeter \n", + "22 A great IB International School in Sohar, Oman... \n", + "23 None \n", + "24 We're on a mission to get all children active ... \n", + "25 안녕하세요! ✋ Weverse- 일곱남자🎤 I’m with Garam. \n", + "26 📢 #PlasticIsInOurBlood. Help us raise the ala... \n", + "27 #FreeRaif #HumanRights #antiraciste aime l'hum... \n", + "28 حمم تغلي \n", + "29 Contre le radicalisme libertaire ! Anti-conspi... \n", + "30 Coauthor 126 Falsehoods We Believe About Educa... \n", + "31 Official Twitter account of the Deputy Commiss... \n", + "32 None \n", + "33 The Fastest Crime News Updates on the Planet! \n", + "34 The latest updates from the Salisbury Diocesan... \n", + "35 This is run by and for parents of King's Ely r... \n", + "36 Found #OFP on the #HedonicTreadmill trying not... \n", + "37 None \n", + "38 None \n", + "39 Engineer " + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.select(['user_name', 'user_description']).limit(40).toPandas()" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "508ff691-4a49-4a0b-943d-34177ecfc2f4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 6.56 ms, sys: 2.93 ms, total: 9.49 ms\n", + "Wall time: 88.4 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "\n", + "@F.udf\n", + "def get_entity_twt(user_description, followers_count, user_name):\n", + " if (followers_count < 500):\n", + " return \"Misc\"\n", + " \n", + " if(user_description == None or user_name == None):\n", + " return \"Influencer\"\n", + " user_name = user_name.lower()\n", + " user_description = user_description.lower()\n", + " \n", + " if('school' in user_name or 'school' in user_description or 'university' in user_name or 'university' in user_description\n", + " or 'professor' in user_name or 'professor' in user_description or 'research' in user_name or 'research' in user_description\n", + " or 'classroom' in user_name or 'classroom' in user_description):\n", + " return \"School and Universities\"\n", + " \n", + " elif('non profit' in user_name or 'non profit' in user_description or 'ngo' in user_name or 'ngo' in user_description \n", + " or 'donate' in user_description or 'donate' in user_name):\n", + " return \"Nonprofit Organizations\"\n", + " \n", + " elif('gov' in user_description or 'gov' in user_name or 'Department of' in user_name or 'Department of' in user_description\n", + " or 'president' in user_description or 'president' in user_name or 'senate' in user_description or 'senate' in user_name\n", + " or 'gop' in user_description or 'gop' in user_name or 'mayor' in user_description or 'mayor' in user_name\n", + " or 'democ' in user_description or 'democ' in user_name or 'republ' in user_description or 'republ' in user_name\n", + " or 'white house' in user_description or 'white house' in user_name or 'speaker' in user_description or 'speaker' in user_name\n", + " or 'parliament' in user_description or 'parliament' in user_name or 'congress' in user_description or 'congress' in user_name\n", + " or 'minister' in user_description or 'minister' in user_name or 'law' in user_description or 'law' in user_name\n", + " or 'republicans' in user_description or 'republicans' in user_name or 'republicans' in user_description or 'republicans' in user_name\n", + " or 'democratics' in user_description or 'democratics' in user_name or 'democratics' in user_description or 'democratics' in user_name):\n", + " return \"Government\"\n", + " \n", + " elif('news' in user_description or 'news' in user_name or 'journalist' in user_description or 'journalist' in user_name\n", + " or 'daily' in user_description or 'daily' in user_name or 'journal' in user_description or 'journal' in user_name\n", + " or 'times' in user_description or 'times' in user_name or 'post' in user_description or 'post' in user_name\n", + " or 'bbc' in user_description or 'bbc' in user_name or 'fox' in user_description or 'fox' in user_name\n", + " or 'abc' in user_description or 'abc' in user_name or 'nbc' in user_description or 'nbc' in user_name\n", + " or 'msnbc' in user_description or 'msnbc' in user_name or 'cnbc' in user_description or 'cnbc' in user_name\n", + " or 'ndtv' in user_description or 'ndtv' in user_name or 'editor' in user_description or 'editor' in user_name\n", + " or 'host' in user_description or 'host' in user_name or 'writer' in user_description or 'writer' in user_name\n", + " or 'report' in user_description or 'report' in user_name or 'truth' in user_description or 'truth' in user_name\n", + " or 'media' in user_description or 'media' in user_name or 'paper' in user_description or 'paper' in user_name):\n", + " return \"News\"\n", + " \n", + " else:\n", + " return \"Influencer\"\n", + " \n", + "entity_retr = df.withColumn(\"entity\", get_entity_twt(\"user_description\", \"followers_count\", \"user_name\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "f1fd03c0-4eee-47ca-b6e2-a71fdf61b991", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Stage 39:> (0 + 1) / 1]\r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 55.5 ms, sys: 10.3 ms, total: 65.8 ms\n", + "Wall time: 23.8 s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
user_nameuser_descriptionentity
0TitanUp Ty#LGM #TITANS #GBO🍊 #FJB #NJ #USA 🇺🇸Influencer
1SickYooo..Misc
2Saturn#براندازم #نه_به_جمهوری_اسلامیInfluencer
3💙KOHAKU225💙NoneMisc
4maooooNoneMisc
5HashtagVirtual University StudentMisc
6Shehr BanoNoneMisc
7Parent Security#Parents who want to keep their #children #safe #Read #ParentSecurity. #teens #kids #schoolshooting #schoolsafetyMisc
8Get That RightHelping You Know Things BetterInfluencer
9Alex Bellars ☮️🇺🇦🇪🇺🏴󠁧󠁢󠁷󠁬󠁳󠁿Born 327.34 CO2 ppm/Fre, Ger, Hist & PE teacher/MCCT/hockeyist/painter/cyclist/sailor/actor/@TheGreenParty member/#RejoinEU/#campED/#antigrowthcoalitionInfluencer
10masterBig hairy dom top in the city. Message me for some fun, especially if you’re a kinky sub. 🐻😈Influencer
11John BenjaminNoneMisc
12#Eric #8#21#1980 #SCENERIOS #Date #Art #E.CI 'amErican , who is Naturally Born, and is Upstair's at Eric's © ℗®™ #Words or a #Dream to a song, and #meaning #defined #feeling. as that #Protype#PerfectechMisc
13💔Iranian Freedom Fighter♀️🏳️‍🌈از شرق تا غرب، از شمال تا جنوب، از کردستان تا زاهدان و از گیلان تا آبادان گورستان شما قاتلان صلح و آزادی خواهد شد\\nخون را با خون میشوییم\\n#نیکا_شاکرمی\\n#مهسا_امینیMisc
14Mazhar khanNoneMisc
15masterBig hairy dom top in the city. Message me for some fun, especially if you’re a kinky sub. 🐻😈Influencer
16Erynn WatsonFan of evidence based decision making and figuring out root causes. \\nPagan, mother, lover, friend. \\nTweets are my own opinion.Influencer
17Sunil Chandra HansdaNoneMisc
18Alberto ArellanoNoneMisc
19Celestial SojournerFormer RN #Resistance #Antifascist \\n#NowItsAWitchHunt #MagickResistance \\n#JoeBidenIsPresident! #AndDontYouForgetIt! \\nTypos are #MyBad @FXMoore2 is my hero!Government
20Celestial SojournerFormer RN #Resistance #Antifascist \\n#NowItsAWitchHunt #MagickResistance \\n#JoeBidenIsPresident! #AndDontYouForgetIt! \\nTypos are #MyBad @FXMoore2 is my hero!Government
21k$wuavejust a freaky ass page🥴💦| 18+ | HOF RetweeterMisc
22Al Batinah International School (ABIS)A great IB International School in Sohar, Oman.\\nAuthorised & accredited to offer the IB PYP, IB MYP & IB DP.\\nمدرسة الباطنة العالمية , صحارMisc
23Arnold HouseNoneMisc
24imovesWe're on a mission to get all children active daily by 2022! Easy to use lesson plans, movies, music, assessments & more to help teachers deliver active lessonsNews
25VISBEAR안녕하세요! ✋ Weverse- 일곱남자🎤 I’m with Garam.Misc
26Common Seas📢 #PlasticIsInOurBlood. Help us raise the alarm by 1) sharing our tweets 2) signing the petition 3) visiting our website. Enough is enough!Influencer
27Nicolas#FreeRaif #HumanRights #antiraciste aime l'humanitaireInfluencer
28بركانحمم تغليMisc
29Tomy VerreaultContre le radicalisme libertaire ! Anti-conspipi/anti-complotiste totalement! #getvaccinatednow #IStandWithUkraine 🇺🇦Misc
\n", + "
" + ], + "text/plain": [ + " user_name \\\n", + "0 TitanUp Ty \n", + "1 SickYooo \n", + "2 Saturn \n", + "3 💙KOHAKU225💙 \n", + "4 maoooo \n", + "5 Hashtag \n", + "6 Shehr Bano \n", + "7 Parent Security \n", + "8 Get That Right \n", + "9 Alex Bellars ☮️🇺🇦🇪🇺🏴󠁧󠁢󠁷󠁬󠁳󠁿 \n", + "10 master \n", + "11 John Benjamin \n", + "12 #Eric #8#21#1980 #SCENERIOS #Date #Art #E.C \n", + "13 💔Iranian Freedom Fighter♀️🏳️‍🌈 \n", + "14 Mazhar khan \n", + "15 master \n", + "16 Erynn Watson \n", + "17 Sunil Chandra Hansda \n", + "18 Alberto Arellano \n", + "19 Celestial Sojourner \n", + "20 Celestial Sojourner \n", + "21 k$wuave \n", + "22 Al Batinah International School (ABIS) \n", + "23 Arnold House \n", + "24 imoves \n", + "25 VISBEAR \n", + "26 Common Seas \n", + "27 Nicolas \n", + "28 بركان \n", + "29 Tomy Verreault \n", + "\n", + " user_description \\\n", + "0 #LGM #TITANS #GBO🍊 #FJB #NJ #USA 🇺🇸 \n", + "1 .. \n", + "2 #براندازم #نه_به_جمهوری_اسلامی \n", + "3 None \n", + "4 None \n", + "5 Virtual University Student \n", + "6 None \n", + "7 #Parents who want to keep their #children #safe #Read #ParentSecurity. #teens #kids #schoolshooting #schoolsafety \n", + "8 Helping You Know Things Better \n", + "9 Born 327.34 CO2 ppm/Fre, Ger, Hist & PE teacher/MCCT/hockeyist/painter/cyclist/sailor/actor/@TheGreenParty member/#RejoinEU/#campED/#antigrowthcoalition \n", + "10 Big hairy dom top in the city. Message me for some fun, especially if you’re a kinky sub. 🐻😈 \n", + "11 None \n", + "12 I 'amErican , who is Naturally Born, and is Upstair's at Eric's © ℗®™ #Words or a #Dream to a song, and #meaning #defined #feeling. as that #Protype#Perfectech \n", + "13 از شرق تا غرب، از شمال تا جنوب، از کردستان تا زاهدان و از گیلان تا آبادان گورستان شما قاتلان صلح و آزادی خواهد شد\\nخون را با خون میشوییم\\n#نیکا_شاکرمی\\n#مهسا_امینی \n", + "14 None \n", + "15 Big hairy dom top in the city. Message me for some fun, especially if you’re a kinky sub. 🐻😈 \n", + "16 Fan of evidence based decision making and figuring out root causes. \\nPagan, mother, lover, friend. \\nTweets are my own opinion. \n", + "17 None \n", + "18 None \n", + "19 Former RN #Resistance #Antifascist \\n#NowItsAWitchHunt #MagickResistance \\n#JoeBidenIsPresident! #AndDontYouForgetIt! \\nTypos are #MyBad @FXMoore2 is my hero! \n", + "20 Former RN #Resistance #Antifascist \\n#NowItsAWitchHunt #MagickResistance \\n#JoeBidenIsPresident! #AndDontYouForgetIt! \\nTypos are #MyBad @FXMoore2 is my hero! \n", + "21 just a freaky ass page🥴💦| 18+ | HOF Retweeter \n", + "22 A great IB International School in Sohar, Oman.\\nAuthorised & accredited to offer the IB PYP, IB MYP & IB DP.\\nمدرسة الباطنة العالمية , صحار \n", + "23 None \n", + "24 We're on a mission to get all children active daily by 2022! Easy to use lesson plans, movies, music, assessments & more to help teachers deliver active lessons \n", + "25 안녕하세요! ✋ Weverse- 일곱남자🎤 I’m with Garam. \n", + "26 📢 #PlasticIsInOurBlood. Help us raise the alarm by 1) sharing our tweets 2) signing the petition 3) visiting our website. Enough is enough! \n", + "27 #FreeRaif #HumanRights #antiraciste aime l'humanitaire \n", + "28 حمم تغلي \n", + "29 Contre le radicalisme libertaire ! Anti-conspipi/anti-complotiste totalement! #getvaccinatednow #IStandWithUkraine 🇺🇦 \n", + "\n", + " entity \n", + "0 Influencer \n", + "1 Misc \n", + "2 Influencer \n", + "3 Misc \n", + "4 Misc \n", + "5 Misc \n", + "6 Misc \n", + "7 Misc \n", + "8 Influencer \n", + "9 Influencer \n", + "10 Influencer \n", + "11 Misc \n", + "12 Misc \n", + "13 Misc \n", + "14 Misc \n", + "15 Influencer \n", + "16 Influencer \n", + "17 Misc \n", + "18 Misc \n", + "19 Government \n", + "20 Government \n", + "21 Misc \n", + "22 Misc \n", + "23 Misc \n", + "24 News \n", + "25 Misc \n", + "26 Influencer \n", + "27 Influencer \n", + "28 Misc \n", + "29 Misc " + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%%time\n", + "entity_analysis = entity_retr.select(['user_name', 'user_description', 'entity', 'id']).groupby('entity').agg(count('id')).toPandas()\n", + "pd.set_option('display.max_colwidth', 1000)\n", + "entity_retr.select(['user_name', 'user_description', 'entity']).limit(30).toPandas()" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "ad9da1db-df99-4e5d-845e-8b63daff7d2f", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
entityfirst(user_name)first(user_description)
0Nonprofit OrganizationsGringo's Tex MexThe official account for Gringo's Tex-Mex. 🌮 Home of sizzling fajitas, cadillac 'ritas, & our famous creamy green sauce!
1GovernmentSambucca Fellagirl🇨🇦(🇬🇧+🇺🇦)1st gen Canadian who stands with Ukraine for freedom & democracy! Dog lover. If you are RU or MagaT you will be blocked! #IStandWithUkraine #NAFO
2InfluencerL'Agenda Girondin#sorties, #expositions, #spectacles, #animations #concerts dans les #communes environnantes ? #Bordeaux #Mérignac #Talence #Pessac #Cenon #Gironde
3School and UniversitiesMaile SchoolMaile School is the top rated training facility for image, modeling and acting in Central Florida! Training since 1982.
4MiscasdadwaNone
5News𝐏𝐎𝐑𝐍 𝐗𝐓𝐘We Don't Own Any Content Posted.\\n\\n©️😍📥\\n\\n ⚠️⚠️If you'll waste my time, I'm gonna block you permanently⚠️⚠️\\nBackup @haleyvids
\n", + "
" + ], + "text/plain": [ + " entity first(user_name) \\\n", + "0 Nonprofit Organizations Gringo's Tex Mex \n", + "1 Government Sambucca Fellagirl🇨🇦(🇬🇧+🇺🇦) \n", + "2 Influencer L'Agenda Girondin \n", + "3 School and Universities Maile School \n", + "4 Misc asdadwa \n", + "5 News 𝐏𝐎𝐑𝐍 𝐗𝐓𝐘 \n", + "\n", + " first(user_description) \n", + "0 The official account for Gringo's Tex-Mex. 🌮 Home of sizzling fajitas, cadillac 'ritas, & our famous creamy green sauce! \n", + "1 1st gen Canadian who stands with Ukraine for freedom & democracy! Dog lover. If you are RU or MagaT you will be blocked! #IStandWithUkraine #NAFO \n", + "2 #sorties, #expositions, #spectacles, #animations #concerts dans les #communes environnantes ? #Bordeaux #Mérignac #Talence #Pessac #Cenon #Gironde \n", + "3 Maile School is the top rated training facility for image, modeling and acting in Central Florida! Training since 1982. \n", + "4 None \n", + "5 We Don't Own Any Content Posted.\\n\\n©️😍📥\\n\\n ⚠️⚠️If you'll waste my time, I'm gonna block you permanently⚠️⚠️\\nBackup @haleyvids " + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "entity_retr.groupby('entity').agg(first('user_name'), first('user_description')).toPandas()" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "e1de8eb7-72c9-4143-a750-521ecc0c420b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
entitycount(id)
4Misc627690
2Influencer243752
3School and Universities60553
5News48988
1Government22133
0Nonprofit Organizations2051
\n", + "
" + ], + "text/plain": [ + " entity count(id)\n", + "4 Misc 627690\n", + "2 Influencer 243752\n", + "3 School and Universities 60553\n", + "5 News 48988\n", + "1 Government 22133\n", + "0 Nonprofit Organizations 2051" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA38AAAGHCAYAAAAA6evSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAACj90lEQVR4nOzde3zO9f/H8ce1E2FmdhlyqLANzQ6YMVsx31SkHDqoUFPaSilpTqGcviyHlS1ZxkpfdJiSVKRSGQrZSMyx0yxswzbWztfvDz+fukzsqh3UnvfbbbebvT+v6/15fz57XZe99v583h+TxWKxICIiIiIiIv9qdtU9ABEREREREal8Kv5ERERERERqABV/IiIiIiIiNYCKPxERERERkRpAxZ+IiIiIiEgNoOJPRERERESkBlDxJyIiIiIiUgOo+BMREREREakBVPyJiIiIiIjUACr+REQuwcvLq1xf33zzTXUPleXLl/Puu+9WeL+ZmZnMnTuXfv364e/vT4cOHejduzczZszgxx9/tLm/Q4cOERMTQ1paWoWPtbKEhoYyfvz4Kt2nl5cX06ZNq9J9/l1paWl4eXlVSh7+Fe+++26Fv2937txJTEwMOTk5ZbYNHTqUoUOHGt//9ttvxMTEXHQ/58f2T3ofiMg/n0N1D0BE5Er21ltvWX2/cOFCvvnmG15//XWr9jZt2lTlsC5q5cqVuLq6MnDgwArrc/fu3YSHh2OxWBgyZAh+fn44Ojryww8/sGbNGu666y62b99uU5+HDh0iNjaWLl260Lx58woba2WKjY2lXr161T0M+YtmzZpFq1atyrT/lfdtcnIysbGxDBgwgPr161tte+6556y+/+2334iNjeXxxx8nMDDQaluPHj146623cHd3t3kMIiJ/lYo/EZFL8PPzs/q+YcOG2NnZlWn/Nzpz5gyPPfYYtWrV4s0336RJkybGtsDAQAYPHsy6deuqcYSVLz8/n9q1a9O+ffvqHor8DR4eHnTo0KHS92NLMdmwYUMaNmxYiaMRESlLl32KiPwNo0aNom/fvlZtEREReHl58fHHHxtt33//PV5eXnz++edGW0ZGBlOmTOGGG27A29ub0NBQYmNjKS4utuqvsLCQhQsXcsstt+Dt7U3Xrl2ZMGECJ0+eNGJCQ0M5ePAg27ZtMy5pCw0NBaC0tJSFCxdy88034+PjQ+fOnenXr1+Z2csLvf3222RkZBAZGWlV+P3RLbfcYvz7u+++Y/To0YSGhuLj40NoaChPP/00R48eNWLeffddnnzySQCGDRtmjPWPlwlu2bKFBx54gI4dO+Lr68vgwYPZunVrmX1/+umn9OvXD29vb3r16sXrr79OTEwMXl5eVnEFBQXMmzeP0NBQvL29CQkJYerUqWUu2wsNDSU8PJxPPvmE/v3706FDB2JjY41tF172eebMGaKioqz6nTlzJnl5eVZxH3/8MXfddRedOnXC19eXXr16MWHChD897xd68803ufnmm/H29qZPnz58+OGHVttPnjzJ888/T58+ffD396dbt24MGzaMHTt2lOlrxYoV3H777fj7++Pv788tt9zC/PnzrWLKm5fHjx/nySefxN/fn06dOvHUU0+RmZlZ7uM6cOAAjz76KAEBAXTo0IE77riD9957zyrmm2++wcvLi7Vr1xIdHU1wcDAdO3bkwQcf5MiRI+XeV3mcv8x29erV3Hrrrfj6+nL77bezceNGIyYmJoYXXngBgF69epW5fPSPl32mpaXRrVs34NzM8fnY83n0Z5d9lif/T548yeTJk7nxxhuNz4TBgwezZcuWCj0nIvLvo5k/EZG/ISgoiPXr13PixAnc3d0pLi5m27Zt1K5dmy1btnDrrbcC536hc3BwoEuXLsC5X7Dvuusu7OzsGDlyJC1btiQ5OZlXXnmFo0ePMmvWLOBc4fbYY4/x7bff8tBDD9GxY0eOHj1KTEwMu3fvZtWqVdSuXZvY2FhGjRqFs7OzcemZk5MTAPHx8cTGxvLoo4/SuXNniouLOXLkCLm5uZc8ts2bN2Nvb0/Pnj3LdS6OHj3KddddR9++fXFxcSEjI4OVK1dy55138uGHH9KwYUN69OjB008/zfz585kyZQrXX389AC1btgTg/fffZ9y4cfTq1YuoqCgcHBx46623eOihh1iyZInxy/RXX33FE088QefOnXnxxRcpLi5m6dKlZYoPi8XCY489xtdff80jjzxC586d2b9/PzExMaSkpPDWW28Z5wnOFemHDx/m0UcfpXnz5lx11VUXPdbffvuNIUOGcOzYMaPYP3jwIAsWLODAgQO89tprmEwmkpOTGT16NH369OHxxx+nVq1apKen8/XXX5frnH7++ed88803jBo1iquuuooVK1bw9NNPY29vbxTe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kydPkpqaysmTJ43ZrVGjRhEeHs5DDz3EAw88QElJCUuWLKFu3bpWM43du3cnODiYuXPncubMGTp27Mj+/ftZsGAB7du354477vhLP/MHHniATz75hCFDhvDggw/i5eVFaWkpv/76K0lJSQwfPhxfX19eeukljh07Rrdu3WjSpAk5OTksW7YMR0dHY+XXS3F1deWBBx7gscceM1b7PHLkCNHR0UZMjx49WLhwIQsWLCAgIIAffviBhQsX0rx5c6vCe9KkSdSuXZuOHTvSqFEjMjIyePXVV3F2djZmQMubl/379+e1115j3LhxjB49mmuuuYYvv/ySpKSkcp2/kSNHsnHjRoYNG8bIkSNxcXHhgw8+4IsvviAyMhJnZ2cbfyKXdvDgwTJ/hIBz9+za+qw9T09PAF5//XUGDBiAg4MD1113ndW9gufVq1ePZs2a8dlnn9GtWzdcXFxwdXWlefPmZWLr1q1brvzPzc1l2LBh3HbbbbRq1Yq6devy3XffsWnTJuOzQETkz6j4ExGpAEFBQRw4cMDqvr6rr76aa6+9lh9//LHMDJO7uzuJiYksXLiQJUuWcPz4cerWrUuzZs0ICQkxCiZ7e3teeeUVli1bxvvvv8+rr76Kvb09TZo0ISAgwPhFFOCJJ54gIyODSZMmcfbsWZo1a8bnn39OYGAg69ev55133uHMmTM0atSIoKAgHnvsMavZyIvx8fHhgw8+4LXXXmPdunXEx8dTUlJC06ZN6dq1K5MnTzZi582bx8yZM5kzZw7FxcV07NiRhIQEwsPDrfps0aIFEydOZNmyZQwbNoySkhJmzZrFwIEDueOOO7j66quJj4/nueee4+zZszRs2JB27doxYMAAo48bbriBmJgYXnrpJZ566ikaNWrEvffey4kTJ1izZo0RZzKZWLhwITExMbz77rssWrSIBg0acMcdd/D000+XmTErrzp16rB8+XJeffVV3nrrLdLS0qhduzZNmzYlKCiIZs2aAeDr68uePXuYO3cuJ0+epH79+nh7e/Paa68ZRfClhIaG0qZNG1588UV+/fVXWrRowdy5c+nTp48RExERwW+//UZiYiLx8fG0adOG559/nk8//dRqQaDOnTvz7rvv8vHHH5OdnY2rqyudOnUiKirKKIDKm5dXXXUVy5YtY+bMmcydOxeTyURwcDDz589n8ODBlz2uVq1a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+LNYLJSWlgKwdetWbrjhBgCaNm3KqVOnKnZ0IiIiIiIiUiFsLv68vb155ZVXWL16Ndu3b6dHjx4ApKWlYTabK3p8IiIiIiIiUgFsLv4mTpzI3r17mT59OhEREVxzzTUArF+/Hn9//wofoIiIiIiIiPx9Dra+oG3btnzwwQdl2seOHYu9vX2FDEpEREREREQqls0zf7169brovX0FBQXcfPPNFTIoERERERERqVg2F39Hjx41Fnz5o8LCQo4fP14hgxIREREREZGKVe7LPj/77DPj35s2bcLZ2dn4vrS0lK1bt9KsWbOKHZ2IiIiIiIhUiHIXfyNHjgTAZDIxfvx4604cHGjWrFmZdhEREREREbkylLv4S01NBSA0NJTExEQaNmxYaYMSERERERGRimXzap+ff/658e+CggJq1apVoQMSERERERGRimfzgi+lpaW8/PLLhISE4O/vzy+//ALAiy++yDvvvFPhAxQREREREZG/z+bib+HChbz33ntERkbi6OhotHt6epKYmFihgxMREREREZGKYXPx9/777zN9+nRuv/127Ox+f7mXlxdHjhyp0MGJiIiIiIhIxbC5+Dt+/DgtW7Ys026xWCguLq6QQYmIiIiIiEjFsrn4a9OmDTt27CjTvm7dOtq1a1chgxIREREREZGKZfNqn48//jhjx47l+PHjWCwWPvnkE3744QdWr15NXFxcZYxRRERERERE/iabZ/5CQ0OJjo7mq6++wmQysWDBAg4fPsyiRYvo3r17ZYxRRERERERE/iabZ/4AQkJCCAkJqeixiIiIiIiISCWxeeYPICcnh3feeYf58+dz+vRpAL7//nuOHz/+lwcSFxeHl5cXM2fONNosFgsxMTEEBwfj4+PD0KFDOXjwoNXrCgsLmT59OoGBgfj5+REREcGxY8esYrKzs4mMjKRTp0506tSJyMhIcnJyrGLS09OJiIjAz8+PwMBAZsyYQWFhoVXM/v37GTJkCD4+PoSEhBAbG4vFYvnLxywiIiIiIlJVbC7+UlNTufnmm1m8eDFLliwhNzcXgA0bNjBv3ry/NIjdu3fz1ltv4eXlZdW+ePFiEhISmDJlComJiZjNZsLCwjhz5owRM3PmTDZs2EB0dDQrVqwgLy+P8PBwSkpKjJgxY8aQmppKfHw88fHxpKamMnbsWGN7SUkJ4eHh5OXlsWLFCqKj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tr81IBEREREREal4NhV/TzzxBM7OzpU1FhEREREREakkNhV/ffv2xc3NrbLGIiIiIiIiIpWk3Pf86X4/ERERERGRf65yF3/nV/sUERERERGRf55yX/aZmppameMQERERERGRSmTTox5ERERERETkn0nFn4iIiIiISA2g4k9ERERERKQGKFfxN2DAALKzswGIjY3lt99+q9RBiYiIiIiISMUqV/F3+PBho+B7+eWXycvLq9RBiYiIiIiISMUq12qf7dq1Y8KECXTq1AmLxcKSJUuoU6fORWMff/zxCh2giIiIiIiI/H3lKv5mzZpFTEwMGzduxGQysWnTJuzt7cvEmUwmFX8iIiIiIiJXoHIVf61atSI6OhqAtm3b8tprr+Hm5lapAxMREREREZGKU+6HvJ+nh72LiIiIiIj889hc/AH8/PPPvP766xw+fBiTyUTr1q0ZNmwYLVu2rOjxiYiIiIiISAWw+Tl/mzZtok+fPuzevRsvLy88PDzYtWsXffv2ZfPmzZUxRhEREREREfmbbC7+5s2bx4MPPsg777zDhAkTmDhxIu+88w4PPPAAc+fOtamvFStW0K9fPzp27EjHjh255557+PLLL43tFouFmJgYgoOD8fHxYejQoRw8eNCqj8LCQqZPn05gYCB+fn5ERERw7Ngxq5js7GwiIyPp1KkTnTp1IjIykpycHKuY9PR0IiIi8PPzIzAwkBkzZlBYWGgVs3//foYMGYKPjw8hISHExsZisVhsOmYREREREZHqYHPxd/jwYe68884y7YMGDeLQoUM29dWkSROeeeYZVq1axapVq+jatSsjR440CrzFixeTkJDAlClTSExMxGw2ExYWxpkzZ4w+Zs6cyYYNG4iOjmbFihXk5eURHh5OSUmJETNmzBhSU1OJj48nPj6e1NRUxo4da2wvKSkhPDycvLw8VqxYQXR0NOvXrycqKsqIOXPmDMOHD8fd3Z3ExEQmT57M0qVLSUhIsOmYRUREREREqoPNxV/Dhg3Zt29fmfZ9+/bZvAJoaGgoN954I9dddx3XXXcdo0ePpk6dOqSkpGCxWFi2bBkRERH07t0bT09PoqKiyM/PZ+3atQDk5uayatUqxo8fT1BQEO3bt2fOnDkcOHCALVu2AOeK1U2bNjFjxgz8/f3x9/dn+vTpbNy4kSNHjgCQlJTEoUOHmDNnDu3btyco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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import seaborn as sns\n", + "sns.set_style(\"dark\")\n", + "plt.rcParams[\"figure.figsize\"] = (10, 4)\n", + "entity_analysis.sort_values(by='count(id)', inplace=True, ascending=False)\n", + "display(entity_analysis)\n", + "fig = entity_analysis.plot(kind='bar', x='entity', y='count(id)', legend=None, color='green', grid=True)\n", + "fig.set_xlabel('Organization (User Type)')\n", + "fig.set_ylabel('Number of Tweets per Entity')\n", + "fig.bar_label(fig.containers[0], fmt='%d', label_type='edge')\n", + "plt.ticklabel_format(style='plain', axis='y')\n", + "plt.xticks(rotation=0)\n", + "plt.title('Tweets Categories based on Entities')\n", + "plt.ylim([-0.5, 800000])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "6e78c1ab-c30e-4db8-94dd-677114590e83", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 2.44 ms, sys: 3.71 ms, total: 6.15 ms\n", + "Wall time: 137 ms\n" + ] + } + ], + "source": [ + "%%time \n", + "try:\n", + " entity_extraction.write.\\\n", + " parquet(\"gs://msca-bdp-students-bucket/shared_data/kishorkumarreddy/df_final_for_analysis\")\n", + "except:\n", + " pass\n", + "\n", + "clear_output(wait = False)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "6b7661c0-d1e3-44ca-9842-40cbd8da5588", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
entitycount(id)
4Misc627690
2Influencer243752
3School and Universities60553
5News48988
1Government22133
\n", + "
" + ], + "text/plain": [ + " entity count(id)\n", + "4 Misc 627690\n", + "2 Influencer 243752\n", + "3 School and Universities 60553\n", + "5 News 48988\n", + "1 Government 22133" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "entity_analysis.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "b5ea8754-6acd-41aa-a9f6-d8c41e1bac09", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+--------------------+---------------+-------------------+\n", + "| user_name| user_description|followers_count| id|\n", + "+--------------------+--------------------+---------------+-------------------+\n", + "| TitanUp Ty|#LGM #TITANS #GBO...| 2256|1586426715760459778|\n", + "| SickYooo| ..| 88|1586426719090589696|\n", + "| Saturn|#براندازم #نه_به_...| 883|1586426871524343814|\n", + "| 💙KOHAKU225💙| null| 127|1586427143302443008|\n", + "| maoooo| null| 6|1586427325264310273|\n", + "| Hashtag|Virtual Universit...| 4|1586427331161518080|\n", + "| Shehr Bano| null| 22|1586427333426061312|\n", + "| Parent Security|#Parents who want...| 286|1586427341244231681|\n", + "| Get That Right|Helping You Know ...| 802|1586427362228436996|\n", + "|Alex Bellars ☮️🇺...|Born 327.34 CO2 p...| 6326|1586427427798265856|\n", + "+--------------------+--------------------+---------------+-------------------+\n", + "only showing top 10 rows\n", + "\n" + ] + } + ], + "source": [ + "entity_extraction.show(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "91178e26-fbe1-4f8b-9225-ea91fe000bcb", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
entityavg(retweet_count)
0Nonprofit Organizations194.759275
1Government132.577677
2Influencer263.999616
3School and Universities43.944721
4Misc422.234625
5News150.282228
\n", + "
" + ], + "text/plain": [ + " entity avg(retweet_count)\n", + "0 Nonprofit Organizations 194.759275\n", + "1 Government 132.577677\n", + "2 Influencer 263.999616\n", + "3 School and Universities 43.944721\n", + "4 Misc 422.234625\n", + "5 News 150.282228" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from pyspark.sql.functions import mean\n", + "\n", + "\n", + "entity_analysis_retweet = entity_retr.groupby('entity').agg(avg('retweet_count')).toPandas()\n", + "entity_analysis_retweet" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "id": "6495204d-6163-4c02-abb5-6789bf5e05eb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
entityavg(retweet_count)
0Nonprofit Organizations194.759275
1Government132.577677
2Influencer263.999616
3School and Universities43.944721
4Misc422.234625
5News150.282228
\n", + "
" + ], + "text/plain": [ + " entity avg(retweet_count)\n", + "0 Nonprofit Organizations 194.759275\n", + "1 Government 132.577677\n", + "2 Influencer 263.999616\n", + "3 School and Universities 43.944721\n", + "4 Misc 422.234625\n", + "5 News 150.282228" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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EREREZUrcidjEyZMKIk4iIiIiIiIyhW57xkjIiIiIiKiz8dkjIiIiIiISAmYjBERERERESkBkzEiIiIiIiIl+OxkLDs7G2FhYUhMTFREPEREREREROWC3MmYu7s7Dhw4ACA3ERsyZAh69+6N9u3b4+rVqwoPkIiIiIiIqCySOxk7ffo0LCwsAAC///47IiMjcfLkSQwdOhReXl4KD5CIiIiIiKgskjsZS0hIgKGhIQDgwoUL6NatG+rWrYt+/frh/v37Cg+QiIiIiIioLJI7GTMwMMCDBw+QnZ2NS5cuwc7ODgCQlpYGqVSq8ACJiIiIiIjKIlV5F+jTpw8mT54MQ0NDSCQS2NvbAwD+/vtvmJqaKjxAIiIiIiKiskjuZGzixIlo0KABoqOj0a1bN6irqwMApFIpRo0apfAAiYiIiIiIyiK5k7GAgAA4OjqKSVieHj164MSJEwoLjIiIiIiIqCyT+56x2bNn4927d/nKk5OTMXv2bIUERUREREREVNbJnYwJggCJRJKv/NWrV9DR0VFIUERERERERGVdkS9T/PbbbyGRSCCRSPD9999DVfXfRbOzsxEZGYk2bdqUSJBERERERERlTZGTsc6dOwMAwsLC4ODggIoVK4rz1NTUYGRkhK5duyo+QiIiIiIiojKoyMnYhAkTAABGRkZwdHSEhoZGiQVFRERERERU1sl9z1jv3r2Rnp6OAwcOYOXKlXjz5g0A4M6dO3j16pWi4yMiIiIiIiqT5B7aPjw8HMOGDYOOjg5evHiBAQMGoHLlyjh79ixevnyJZcuWlUScREREREREZYrcPWNLly5F7969cebMGZlnjbVt2xbXr19XaHBERERERERlldzJ2O3bt+Hs7JyvvFq1aoiNjVVIUERERERERGWd3MmYhoYGkpKS8pU/fvwYVapUUUhQREREREREZZ3cyVinTp2wbt06ZGZmimUvX77EypUrObQ9ERERERFREcmdjM2cOROvX7+GnZ0d0tPT4eLigq5du6JixYpwdXUtiRiJiIiIiIjKHLlHU9TW1saePXvw559/4u7du8jJyUHjxo1hZ2dXEvERERERERGVSXInY3lat24NGxsbqKurQyKRKDImIiIiIiKiMk/uyxRzcnKwbt06tGnTBtbW1oiMjAQArF69GgcOHFB4gERERERERGWR3MnY+vXrcfjwYUyfPh1q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sNgwhEaHKjsMIiIiIioFciVj2dnZCAkJwbBhwzBmzBg8ePAAgiCgXr16qFhReZc2ERERERERfWnkulNfKpVixIgRePfuHbS0tNCkSRM0bdqUiRgREREREZGc5B42zczMDJGRkSURCxERERERUbkhdzLm6uoKT09P/P7774iJiUFSUpLMHxEREREREX2a3AN4jBw5EgAwduxYSCT/PhNJEARIJBKEhZXPkeCIiIiIiIjkIXcytn379pKIg4iIiIiIqFyROxlr1apVScRBRERERERUrsh9zxgRERERERF9PiZjRERERERESsBkjIiIiIiISAmKlIydP38emZmZJR0LERERERFRuVGkZGzChAl49+4dAKBhw4aIj48v0aCIiIiIiIjKuiIlY1WqVMHNmzcB/Ps8MSIiIiIiIiq+Ig1t7+zsjHHjxkEikUAikcDe3r7QunzoMxERERER0acVKRmbOHEiHB0d8ezZM4wdOxZLly6Fjo5OScdGRERERERUZhX5oc/16tVDvXr1MGHCBHTr1g1aWlolGRcREREREVGZVuRkLM+ECRMAAK9fv8ajR48gkUhQt25dVKlSReHBERERERERlVVyJ2OpqalYuHAhjh49iuzsbACAVCpFr169MHfuXPaYERERERERFYHcD31eunQpgoODsX79ely/fh3Xr1/H+vXrERwcDA8Pj5KIkYiIiIiIqMyROxk7ffo03N3d0a5dO2hra0NbWxvt2rXDokWLcPr06ZKIkYiIiIiIqMyROxlLS0uDgYFBvnJ9fX2kpaUpJCgiIiIiIqKyTu5kzMrKCt7e3khPTxfL0tLSsHbtWlhZWSkyNiIiIiIiojJL7gE85syZg5EjR6Jt27awsLCARCJBWFgYNDQ0sHXr1pKIkYiIiIiIqMyROxkzMzPDmTNncPToUTx69AiCIKBHjx5wcnKCpqZmScRIRERERERU5sidjAGApqYmBgwYoOhYiIiIiIiIyg257xkjIiIiIiKiz8dkjIiIiIiISAmKdZkiERGVnps3b2D37h24dy8M8fFxWLJkBdq2bS/Of/06Hhs2+ODatb+QlPQOzZrZwNV1OmrVqp1vXYIgYNq0n3D16pV86/lQv35OiI6Oylfeu3d/TJ06EwDg7j4fJ08Gysxv1MgSmzb9Kk6/eBGJtWtX459/biIjIxO2tq3h6jodVaroy3cg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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.rcParams[\"figure.figsize\"] = (10, 4)\n", + "sns.set_style(\"dark\")\n", + "display(entity_analysis_retweet)\n", + "entity_analysis_retweet.sort_values(by='avg(retweet_count)', inplace=True, ascending=False)\n", + "fig = entity_analysis_retweet.plot(kind='bar', x='entity', y='avg(retweet_count)', legend=None, color='green', grid=True)\n", + "fig.set_xlabel('Organization (User Type)')\n", + "fig.set_ylabel('Average Number of re-tweets per Entity')\n", + "fig.bar_label(fig.containers[0], label_type='edge')\n", + "plt.ticklabel_format(style='plain', axis='y')\n", + "plt.xticks(rotation=0)\n", + "plt.ylim([-0.5, 500])\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "c08fb34b-af38-46c1-8643-5e5cce8c04cb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
entityavg(retweet_count)
4Misc422.234625
2Influencer263.999616
0Nonprofit Organizations194.759275
5News150.282228
1Government132.577677
3School and Universities43.944721
\n", + "
" + ], + "text/plain": [ + " entity avg(retweet_count)\n", + "4 Misc 422.234625\n", + "2 Influencer 263.999616\n", + "0 Nonprofit Organizations 194.759275\n", + "5 News 150.282228\n", + "1 Government 132.577677\n", + "3 School and Universities 43.944721" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAH4CAYAAABAPtymAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAAC/q0lEQVR4nOzdd3xO5//H8dedIUGISGKrHXvP2BQ1a1Vpi1btWaFqlRo1QlESI2Zr16Z2qS81WqNRRYxSaksiQiI75/eHX+72bqjcmjTB+/l4eDzc17nOdT7n3Nd953zuc53rmAzDMBAREREREZEks0ntAERERERERF40SqRERERERESspERKRERERETESkqkRERERERErKRESkRERERExEpKpERERERERKykREpERERERMRKSqRERERERESspERKRERERETESkqkRCRN2bBhA0WLFjX/K1GiBDVr1sTLy4srV648V5u//fYbPj4+XL9+PXmDTUb79+/Hx8cn2duNjo5m+fLlvPPOO1SuXJlSpUpRq1YtPvroI44ePWp1exEREfj4+PDTTz8le6wpZdiwYdSvX/8/3WanTp1o3rz5f7rN5FC/fn2GDRuW2mEAcP36dYvvgr//e57Py507d/Dx8SEgICDRMh8fH4oWLWpRtmLFCjZs2PDU2J60TEReHXapHYCIyJNMmjSJggULEhUVxc8//8y8efP46aef2LFjB87Ozla19dtvv+Hr60uVKlXIkydPCkX87+zfv58VK1bQv3//ZGvz3r17dOvWjQsXLtCmTRu6du1KlixZuHPnDnv37uWDDz5gw4YNFCtWLMltRkRE4OvrS79+/ahatWqyxZqS+vTpQ+fOnVM7DHlOT0tKc+TIYXVbd+/exdfXl9y5c1O8eHGLZe3ataNWrVoWZatWrcLFxYU2bdpYlGfLlo1vvvmG1157zeoYROTloURKRNKkIkWKULp0aQCqVq1KXFwcPj4+7Nmzh7Zt26ZydC+GoUOHcv78eRYuXIinp6fFsmbNmvHBBx+QOXPmVIou5UVERJA+fXqd7L7gcubMSbly5VJ8Ozly5EhycpYuXbr/JCYRSds0tE9EXggJSVVwcLBF+a+//kqvXr2oUqUKpUuXplWrVmzfvt28fMOGDXz00UcAdO7c2TwsaMOGDaxYsYJixYpZtLl48WKKFi3K2LFjzWXx8fFUrlyZyZMnm8uio6OZM2cOjRs3plSpUlSrVo3hw4dz7969RLFv376d9u3bU65cOcqXL0/Xrl05e/asefmwYcNYsWIFgMXQpYShiDt27KBdu3ZUrFiRsmXL8vrrrzN8+PB/PF6nT5/mwIEDtG3bNlESlaBMmTLkypULeHz1asyYMTRt2pTy5cvj6elJ586dOX78uLn+9evXzW35+vqa4/zrULArV64wePBgPD09KVWqFE2aNDHv219dvHiRDz/8kLJly1KtWjXGjh3L//73P4oWLZpo2OC6det48803KV26NFWqVKFv375cunTJos6wYcMoX74858+f58MPP6R8+fJ88MEH5mV/H9pnGAYrVqygZcuWlClThsqVKzNgwACuXbtmUe/s2bP07NnTvD81a9akR48e3L59+58Ov9nx48d5++23KVOmDLVq1eLLL78kLi7Ooo6vry/t2rWjSpUqVKhQgdatW7N27VoMw7Cod+TIETp16kTVqlUpU6YMdevWpX///kRERJjrJLVfxsTEMGXKFGrUqEHZsmV55513OHXqVJL2CeD+/fuMGTOGWrVqUapUKV5//XVmzJhBdHS0Rb2iRYsybtw4Nm3aRJMmTShbtixvvvkm+/btS/K2kiLhqtWpU6d49913zZ+T+fPnEx8fD8BPP/3EW2+9BcDw4cMTDRH8+9C++vXrc/HiRY4ePWqum9CPnja0Lyn9Pz4+njlz5vDGG29QpkwZKlWqRIsWLfj666+T9ZiISMrTFSkReSEkJBX58+c3l/34449069aNsmXLMmbMGDJlysT27dvx8vIiMjKSNm3aULduXQYNGsT06dMZPXo0JUuWBOC1117j/v37GIbBkSNHzEOHDh8+jKOjI4cPHzZv5/Tp0zx48MCcRMTHx9OnTx9OnDhB165dqVChAjdu3MDHx4dTp06xfv16HB0dAZg3bx5ffvklbdq0oXfv3sTExLBo0SLee+891q5dS+HChenTpw+PHj1i165dfPPNN+btZsuWDX9/f7y8vGjatCn9+vXDwcGBmzdv8uOPP/7j8Tp06BAADRo0SNLxvX//PgD9+vXDzc2NR48e8d1339GpUye++uorqlatSrZs2Vi4cCHdunXjrbfeol27dgBkzZoVeDyEskOHDuTMmZOhQ4fi7u7OwYMH+fzzzwkJCaFfv37A4+FVHTt2JEOGDIwZ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irVr1zJt2jTu378PwJkzZ7hz505yxyciIiIiIpLmWD39+blz5+jSpQuZMmXixo0bvP3222TJkoXvvvuOmzdvMmXKlJSIU0REREREJM2w+orUpEmTaN26Nbt377Z4llTt2rU5fvx4sgYnIiIiIiKSFlmdSJ0+fZoOHTokKs+ePTuBgYHJEpSIiIiIiEhaZnUi5eDgQFhYWKLy33//naxZsyZLUCIiIiIiImmZ1YnU66+/zuzZs4mJiTGX3bx5k2nTpmn6cxEREREReSVYnUgNHTqUe/fuUb16daKioujUqRONGjUiY8aMeHl5pUSMIiIiIiIiaYrVs/Y5OTmxatUqjhw5wtmzZ4mPj6dkyZJUr149JeITERERERFJc6xOpBJ4enpSoUIF0qVLh8lkSs6YRERERERE0jSrh/bFx8cze/ZsatWqRfny5bl+/ToAX375JWvXrk32AEVERERERNIaqxOpOXPmsHHjRoYMGYK9vb253MPDg3Xr1iVrcCIiIiIiImmR1YnU5s2bGT9+PG+++SY2Nn+uXrRoUS5fvpyswYmIiIiIiKRFVidSd+7c4bXXXktUbhgGsbGxyRKUiIiIiIhIWmZ1IlW4cGGOHz+eqHznzp0UL148WYISERERERFJy6yeta9fv3588skn3LlzB8Mw2L17N7///jubNm3Cz88vJWIUERERERFJU6y+IlW/fn1mzJjBgQMHMJlMzJo1i0uXLjFv3jxq1KiREjGKiIiIiIikKc/1HKlatWpRq1at5I5FRERERETkhWD1FakZM2Zw6NAhIiIi/vXGV65cSYsWLahQoQIVKlSgffv27N+/37zcMAx8fHyoWbMmZcqUoVOnTly8eNGijejoaMaPH0/VqlUpV64cvXr14vbt2/86NhERERERkaexOpE6ffo0/fv3p3LlyrRv355p06Zx4MABwsPDrd54jhw5+Pjjj1m/fj3r16+nWrVq9O3b15wsLViwgCVLljB69GjWrVuHm5sbXbp0ISwszNzGhAkT+O6775gxYwYrV67k0aNH9OzZk7i4OKvjERERERERSQqrE6lFixZx7Ngxli1bxuuvv87Zs2fx8vKiatWqvP3221a1Vb9+ferUqUOBAgUoUKAAXl5eZMiQgZMnT2IYBkuXLqVXr140atQIDw8PvL29iYyMZOvWrQA8fPiQ9evXM2zYMKpXr06J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376drVu3snDhQooUKcKbb75JixYtyJEjR0rEKCIiIiLyyrCxMWFj8+wZ8FKSra3Vk3snq/h4g/h4I1VjeBarE6msWbPSsWNHOnbsyLVr19i6dSubN29mxowZVKpUiaVLnz7HvIiIiIiIPJ2NjQnnLI7Y2Vp9mp6sXFwypur2Y+NiCb0fmaaTqX/1DuXNm5cePXpQrFgxZs6cybFjx5IrLhERERGRV46NjQk7Wzve2/AeAYEBqR1OqijuXpwVbVZgY2N6OROpEydO8O2337Jr1y6ioqKoX78+Xl5eyRmbiIiIiMgrKSAwAP/b/qkdhvwDqxOp6dOns3XrVu7evUv16tUZMWIEDRo0IH369CkRn4iIiIiISJrzXNOfd+3alSZNmpA1a1aLZQEBARQvXjzZghMREREREUmLrE6kVq+2fLrxw4cP2bJlC+vWrePcuXMEBLyaYzlFREREROTV8dz3SB05coT169fz3XffkStXLho1asSECROSMzYREREREZE0yapE6vbt22zYsIH169cTERFBkyZNiI2NxcfHh8KFC6dUjCIiIiIiImlKkhOp7t27c+LECerVq8eoUaOoVasWtra2iYb6iYiIiIiIvOySnEgdOnSITp068c4775A/f/4UDElERERERCRts0lqxRUrVhAeHk7btm1p164dy5cv5969eykZm4iIiIiISJqU5ESqfPnyfP755xw8eJD27duzbds2ateuTXx8PIcOHSIsLCwl4xQREREREUkzkpxIJUifPj1vvfUWq1atYsuWLXTp0oUFCxZQvXp1evXqlRIxioiIiIiIpClWJ1J/VbBgQT755BP279/P9OnTkysmERERERGRNO25nyP1V7a2tjRo0IAGDRokR3MiIiIiIiJp2r+6IiUiIiIiIvIqUiIlIiIiIiJiJSVSIiIiIiIiVlIiJSIiIiIiYiUlUiIiIiIiIlZSIiUiIiIiImIlJVIiIiIiIiJWUiIlIiIiIiJiJSVSIiIiIiIiVnppEqkVK1ZQv359SpcuTZs2bTh+/HhqhyQiIiIiIi+plyKR2r59O5MmTaJ3795s2rSJihUr0r17d27evJnaoYmIiIiIyEvILrUDSA5Lliyhbdu2tGvXDoCRI0dy8OBBVq1axeDBg5PcjsmUUhEmTXH34qkbQCr6676n9vuQmtQHHnuV+wC8uv1AfeBP6gPq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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.rcParams[\"figure.figsize\"] = (10, 4)\n", + "sns.set_style(\"dark\")\n", + "display(entity_analysis_retweet)\n", + "entity_analysis_retweet.sort_values(by='avg(retweet_count)', inplace=True, ascending=False)\n", + "fig = entity_analysis_retweet.plot(kind='bar', x='entity', y='avg(retweet_count)', legend=None, color='green', grid=True)\n", + "fig.set_xlabel('Organization (User Type)')\n", + "fig.set_ylabel('Average Number of re-tweets per Entity')\n", + "fig.bar_label(fig.containers[0], label_type='edge')\n", + "plt.ticklabel_format(style='plain', axis='y')\n", + "plt.xticks(rotation=45, ha='right')\n", + "plt.title('Retweets Categories based on Entities')\n", + "plt.ylim([-0.5, 500])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4cda6a13-9046-4add-8fbc-c9b2389c0050", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Uniqueness Analysis.ipynb b/Uniqueness Analysis.ipynb new file mode 100644 index 0000000..1b6dc17 --- /dev/null +++ b/Uniqueness Analysis.ipynb @@ -0,0 +1,4829 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "c73cbff6-1b82-49e1-bd4c-bf4e049074f5", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import shutil\n", + "import pandas as pd\n", + "from pyspark.sql.functions import *\n", + "from pyspark.sql.types import *" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "75ae362f-7ad2-43bf-be97-7e28ff5365d0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: nltk==3.7 in /opt/conda/miniconda3/lib/python3.8/site-packages (3.7)\n", + "Requirement already satisfied: click in /opt/conda/miniconda3/lib/python3.8/site-packages (from nltk==3.7) (7.1.2)\n", + "Requirement already satisfied: regex>=2021.8.3 in /opt/conda/miniconda3/lib/python3.8/site-packages (from nltk==3.7) (2022.10.31)\n", + "Requirement already satisfied: joblib in /opt/conda/miniconda3/lib/python3.8/site-packages (from nltk==3.7) (1.2.0)\n", + "Requirement already satisfied: tqdm in /opt/conda/miniconda3/lib/python3.8/site-packages (from nltk==3.7) (4.64.1)\n", + "\u001b[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001b[0m\u001b[33m\n", + "\u001b[0m" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[nltk_data] Downloading package stopwords to /root/nltk_data...\n", + "[nltk_data] Package stopwords is already up-to-date!\n" + ] + }, + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "!pip install nltk==3.7\n", + "import re\n", + "from pyspark.ml.feature import MinHashLSH\n", + "from pyspark.ml.feature import CountVectorizer, IDF, CountVectorizerModel, Tokenizer, RegexTokenizer, StopWordsRemover\n", + "import nltk\n", + "from nltk.corpus import stopwords\n", + "nltk.download('stopwords')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "db06a579-588e-4046-b8b1-28eb8ed132b9", + "metadata": {}, + "outputs": [], + "source": [ + "from pyspark.sql.functions import monotonically_increasing_id, row_number\n", + "from pyspark.sql.window import Window\n", + "pd.set_option(\"display.max_colwidth\",None)\n", + "from google.cloud import storage\n", + "from pyspark.sql import Row" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "7ff2718b-6e75-49fb-abc5-4160809c7f97", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "spark = SparkSession.builder.getOrCreate()\n", + "spark.conf.set(\"spark.sql.repl.eagerEval.enabled\",True)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "a45abdf5-315a-465e-a4ad-b4773facbb03", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "23/03/10 18:28:32 WARN org.apache.spark.sql.catalyst.util.package: Truncated the string representation of a plan since it was too large. This behavior can be adjusted by setting 'spark.sql.debug.maxToStringFields'.\n" + ] + } + ], + "source": [ + "tw_df=spark.read.parquet('gs://msca-bdp-students-bucket/shared_data/kishorkumarreddy/Final_Project-100millionFilterHashtag')\n", + "#path: msca-bdp-students-bucket/shared_data/kishorkumarreddy/Final_Project-100millionFilterHashtag" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "5ebe1818-12cf-4076-97d0-0c5413bbb529", + "metadata": {}, + "outputs": [], + "source": [ + "tw_df.createOrReplaceTempView(\"tw_df\")\n", + "query = '''select tweet_text as text,\n", + "retweeted_status.id as rt_object_id,\n", + "user.description as desc\n", + "from tw_df'''\n", + "tw_Q4 = spark.sql(query)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "c8cd07f6-98f0-4c9d-bb0f-3dce5f4a9bdb", + "metadata": {}, + "outputs": [], + "source": [ + "tw_Q4 = tw_Q4.sample(0.025)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "c04893d6-6b4c-4c47-b522-029c24463851", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Stage 1:> (0 + 1) / 1]\r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+-------------------+--------------------+------+----------+\n", + "| text| rt_object_id| desc| org|tweet_type|\n", + "+--------------------+-------------------+--------------------+------+----------+\n", + "|massive protests ...| null|Follow http://ind...| news| tweet|\n", + "|real story about ...|1571340634820325377|Nationalist, हिंद...|Others| retweet|\n", + "|real story about ...|1571340634820325377| Savage/sweetness|Others| retweet|\n", + "|she sucked her be...|1570601230287900682| null|Others| retweet|\n", + "|#justice_for_maga...|1570014495350886401| null|Others| retweet|\n", + "|#justice_for_maga...|1570014572572180480| null|Others| retweet|\n", + "|#justice_for_maga...|1570014309564174340| null|Others| retweet|\n", + "|#justice_for_maga...|1570014207701286912| I am a student|Others| retweet|\n", + "|#justice_for_maga...|1570013849767804930| null|Others| retweet|\n", + "|@pennlaw @dorothy...| null| یک سینیور اورتینکر|Others| tweet|\n", + "|let go of student...|1576709566951137280| null|Others| retweet|\n", + "|#justice_for_maga...|1570024669234991105| null|Others| retweet|\n", + "|#justice_for_maga...|1570016515143135233| null|Others| retweet|\n", + "|on #worlddisabili...|1599437809819193344| null|Others| retweet|\n", + "|let go of student...|1576709566951137280| هم رنگ واقعیت ...|Others| retweet|\n", + "|let go of student...|1576709566951137280|علاقمند به فوتبال...|Others| retweet|\n", + "|let go of student...|1576709566951137280| null|Others| retweet|\n", + "|let go of student...|1576709566951137280| null|Others| retweet|\n", + "|let go of student...|1576709566951137280| null|Others| retweet|\n", + "|let go of student...|1576709566951137280|#مهسا_امینی\n", + "#mahs...|Others| retweet|\n", + "+--------------------+-------------------+--------------------+------+----------+\n", + "only showing top 20 rows\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "tw_Q4 = tw_Q4.withColumn(\"org\",when(col(\"desc\").rlike('.*government.*|.*Government.*|.*minister.*|.*Minister.*|.*gov.*'),\"gov\")\n", + " .when(col(\"desc\").rlike('.*University.*|.*university.*|.*school.*|.*School.*'),\"edu\")\n", + " .when(col(\"desc\").rlike('.*News.*|.*news.*|.*Media.*|.*media.*'),\"news\")\n", + " .when(col(\"desc\").rlike('.*nonprofit.*|.*Nonprofit.*|.*NGO.*|.*aid.*'),\"ngo\")\n", + " .when(col(\"desc\").rlike('.*influencer.*|.*Influencer.*'),\"influencer\").otherwise('Others'))\n", + "tw_df1 = tw_Q4.withColumn(\"tweet_type\",when(col(\"rt_object_id\").isNull() != True,\"retweet\").otherwise(\"tweet\"))\n", + "tw_df1.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "ab95967c-f442-43e0-8480-27921622cc5e", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Stage 2:> (0 + 1) / 1]\r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+------------+-------------------------+------+----------+\n", + "| text|rt_object_id| desc| org|tweet_type|\n", + "+--------------------+------------+-------------------------+------+----------+\n", + "|massive protests ...| null| Follow http://ind...| news| tweet|\n", + "|@pennlaw @dorothy...| null| یک سینیور اورتینکر|Others| tweet|\n", + "|@cnnbrk in front ...| null|스티와 아미 💜We are t...|Others| tweet|\n", + "|my boobs were so ...| null| 24 yr ✰ bisex (no...|Others| tweet|\n", + "|it's that time of...| null| Official Twitter ...|Others| tweet|\n", + "|@harvard we need ...| null| null|Others| tweet|\n", + "|freaky teen eatin...| null| main @pyttingz de...|Others| tweet|\n", + "|@harvard in front...| null| هرچی که توی مغزمه...|Others| tweet|\n", + "|@eunoiavirago_ be...| null| یک عدد دانشجو که ...|Others| tweet|\n", + "|the #everyonesinv...| null| A real-time repor...|Others| tweet|\n", + "|see our latest le...| null| Follow this accou...|Others| tweet|\n", + "|bravo to the iran...| null| Actor. Writer. Pr...|Others| tweet|\n", + "|can you say #stup...| null| Old white man tha...|Others| tweet|\n", + "|@whcos @jod46 the...| null| null|Others| tweet|\n", + "|@tedcruz @mayrafl...| null| silence the world...|Others| tweet|\n", + "|@golshifteh @guar...| null| null|Others| tweet|\n", + "|#cycletoschoolwee...| null| Cheshire West and...| news| tweet|\n", + "|2 day 11 hrs an 5...| null| insta: @ paulina....|Others| tweet|\n", + "|@nazaninboniadi t...| null| صبح میشه این شب 🜚|Others| tweet|\n", + "|@mime_1999 the st...| null| ??! 15 years old ...|Others| tweet|\n", + "+--------------------+------------+-------------------------+------+----------+\n", + "only showing top 20 rows\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "tw_df1 = tw_df1.filter(col('tweet_type') == 'tweet')\n", + "tw_df1.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "a54d27cc-7b48-4dd8-b554-bc9e1d843b16", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Stage 3:> (0 + 1) / 1]\r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+-----------+--------------------+------------------+--------------------+--------------------+--------------------+--------------+---------+------------+----+-------------------+-------------------+-----------------------+---------------------+-------------------------+-------------------+-----------------------+---------------+----+-----+------------------+-----------+--------------------+-------------------+--------------------+-----------------------+--------------------+-----------+-------------+---------+---------------+--------------------+--------------------+--------------------+-------------+---------+--------------------+--------------------+---------------------+--------------------+\n", + "|coordinates| created_at|display_text_range| entities| extended_entities| extended_tweet|favorite_count|favorited|filter_level| geo| id| id_str|in_reply_to_screen_name|in_reply_to_status_id|in_reply_to_status_id_str|in_reply_to_user_id|in_reply_to_user_id_str|is_quote_status|lang|place|possibly_sensitive|quote_count| quoted_status| quoted_status_id|quoted_status_id_str|quoted_status_permalink| quoted_text|reply_count|retweet_count|retweeted| retweeted_from| retweeted_status| source| text| timestamp_ms|truncated| tweet_text| user|withheld_in_countries| stripped|\n", + "+-----------+--------------------+------------------+--------------------+--------------------+--------------------+--------------+---------+------------+----+-------------------+-------------------+-----------------------+---------------------+-------------------------+-------------------+-----------------------+---------------+----+-----+------------------+-----------+--------------------+-------------------+--------------------+-----------------------+--------------------+-----------+-------------+---------+---------------+--------------------+--------------------+--------------------+-------------+---------+--------------------+--------------------+---------------------+--------------------+\n", + "| null|Sat Oct 29 18:36:...| null|{[{[64, 68], SEC}...|{[{null, null, pi...| null| 0| false| low|null|1586426715760459778|1586426715760459778| null| null| null| null| null| false| en| null| false| 0| null| null| null| null| null| 0| 0| RT| JWPSports|{null, Sat Oct 29...|\n", + "tweet_textid\n", + "{what’s the worst...449\n", + "{study mbbs in pm...450\n", + "{thank you!!! #co...451\n", + "{minnesota studen...452\n", + "{chinese ambassad...453\n", + "\n" + ], + "text/plain": [ + "+--------------------+---+\n", + "| tweet_text| id|\n", + "+--------------------+---+\n", + "|{we are glad to w...|508|\n", + "|{@sportchefengren...|509|\n", + "|{link in bio 👆👆...|510|\n", + "|{important tips t...|511|\n", + "|{phd position in ...|512|\n", + "+--------------------+---+" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "body_text = tw_df1.rdd.map(lambda x : x['tweet_text']).filter(lambda x: x is not None)\n", + "StopWords = stopwords.words(\"english\")\n", + "row = Row('text')\n", + "text_df=body_text.map(row).zipWithIndex().toDF(['tweet_text','id'])\n", + "text_df.limit(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "1124c94b-f847-41ab-98b1-197223364ed6", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "tokens = body_text\\\n", + " .map( lambda document: document.strip().lower())\\\n", + " .map( lambda document: re.split(\" \", document))\\\n", + " .map( lambda word: [x for x in word if len(x) > 1] )\\\n", + " .zipWithIndex()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "5b328169-19b9-47c3-b174-ed282fcc9e68", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "df_tokens = spark.createDataFrame(tokens, [\"list_of_words\",'id'])\n", + "#Drop records with no tokens" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "ab49001e-47c2-4723-8679-004318928dfd", + "metadata": {}, + "outputs": [], + "source": [ + "df_tokens=df_tokens.withColumn('row_index', row_number().over(Window.orderBy(monotonically_increasing_id())))\n", + "tw_df2=tw_df2.withColumn('row_index', row_number().over(Window.orderBy(monotonically_increasing_id())))\n", + "\n", + "df_tokens = df_tokens.join(tw_df2, on=[\"row_index\"]).drop(\"row_index\")\n", + "df_tokens = df_tokens.where(col('list_of_words').getItem(0).isNotNull())" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "42aef780-bda4-4809-a592-ef52cee4f5a7", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "23/03/10 18:30:53 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:30:53 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:31:35 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:31:35 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:31:38 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:31:38 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:31:38 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:31:39 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:31:39 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + " \r" + ] + } + ], + "source": [ + "# countvectorize\n", + "vectorize = CountVectorizer(inputCol=\"list_of_words\", outputCol=\"features\", minDF=1.0)\n", + "df_vectorize = vectorize.fit(df_tokens).transform(df_tokens) " + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "774b516a-3b2e-4686-9e01-2bf260a52172", + "metadata": {}, + "outputs": [], + "source": [ + "# fit MinHashLSH for hash table\n", + "mh = MinHashLSH(inputCol=\"features\", outputCol=\"hashes\", numHashTables=5)\n", + "model = mh.fit(df_vectorize)\n", + "df_hashed = mh.fit(df_vectorize).transform(df_vectorize) #.cache()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "2442e2b0-d826-408d-905f-c6e85e6d2da5", + "metadata": {}, + "outputs": [], + "source": [ + "df_hashed_text = text_df.join(df_hashed, \"id\", how = 'left') #.cache()" + ] + }, + { + "cell_type": "markdown", + "id": "f1f2a511-389f-4582-b0e2-9db8132c5d2f", + "metadata": {}, + "source": [ + "# Tweet Uniqueness Graph Based on Jaccard Similarity (0.3)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "48cf98f7-e8f1-463d-8e24-72bd5935e70f", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "23/03/10 18:31:45 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:31:45 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:31:45 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:31:45 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:44 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:44 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:44 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:44 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:44 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:44 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:44 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:44 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:47 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:47 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:47 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:47 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:47 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:47 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:47 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:47 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:50 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:50 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:50 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:50 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:50 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:50 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:50 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:50 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:52 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:52 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:52 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:52 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:52 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:52 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:52 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:52 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:53 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:53 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:53 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:53 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:53 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:32:53 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + " \r" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
distColorgid_Aid_Btext_Atext_B
00.285714news7672933(@teacherinkinder @donorschoose @amazon hi, hello, howdy! happy #sundayvibes it’s #backtoschool &amp;,)(@mrs_al_13 @donorschoose @amazon hi, hello, howdy! happy #sundayvibes it’s #backtoschool &amp; my cl,)
20.230769Others620621(@joebiden ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, are trapp,)(@kamalaharris ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, are t,)
10.166667Others33208619(@janethlovsbooks @amazon i'm a hs #specialeducation teacher working with cognitively impaired studen,)(@techmidschteach @amazon i'm a hs #specialeducation teacher working with cognitively impaired studen,)
110.000000Others1343212(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)
180.000000Others11138711(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)
170.000000Others11133248(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)
160.000000Others11133212(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)
150.000000Others11131552(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)
140.000000Others11131502(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)
130.000000Others1348711(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)
120.000000Others1343248(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)
100.000000Others1341552(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)
90.000000Others1341502(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)
80.000000Others1341113(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)
70.000000Others36285287(back to school with nhatthanh \\n@sontungmtp777\\n\\n#sontungmtp #theresnooneatall\\n#stanworld #backtoswsch,)(back to school with nhatthanh \\n@sontungmtp777\\n\\n#sontungmtp #theresnooneatall\\n#stanworld #backtoswsch,)
60.000000edu56285944(the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,)(the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,)
50.000000edu35565944(the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,)(the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,)
40.000000edu35565628(the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,)(the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,)
30.000000Others26433441(the algebra requirement needed to graduate is the most failed subject in community colleges. ,)(the algebra requirement needed to graduate is the most failed subject in community colleges. ,)
190.000000Others15021552(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)
\n", + "
" + ], + "text/plain": [ + " distCol org id_A id_B \\\n", + "0 0.285714 news 767 2933 \n", + "2 0.230769 Others 620 621 \n", + "1 0.166667 Others 3320 8619 \n", + "11 0.000000 Others 134 3212 \n", + "18 0.000000 Others 1113 8711 \n", + "17 0.000000 Others 1113 3248 \n", + "16 0.000000 Others 1113 3212 \n", + "15 0.000000 Others 1113 1552 \n", + "14 0.000000 Others 1113 1502 \n", + "13 0.000000 Others 134 8711 \n", + "12 0.000000 Others 134 3248 \n", + "10 0.000000 Others 134 1552 \n", + "9 0.000000 Others 134 1502 \n", + "8 0.000000 Others 134 1113 \n", + "7 0.000000 Others 3628 5287 \n", + "6 0.000000 edu 5628 5944 \n", + "5 0.000000 edu 3556 5944 \n", + "4 0.000000 edu 3556 5628 \n", + "3 0.000000 Others 2643 3441 \n", + "19 0.000000 Others 1502 1552 \n", + "\n", + " text_A \\\n", + "0 (@teacherinkinder @donorschoose @amazon hi, hello, howdy! happy #sundayvibes it’s #backtoschool &,) \n", + "2 (@joebiden ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, are trapp,) \n", + "1 (@janethlovsbooks @amazon i'm a hs #specialeducation teacher working with cognitively impaired studen,) \n", + "11 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "18 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "17 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "16 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "15 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "14 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "13 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "12 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "10 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "9 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "8 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "7 (back to school with nhatthanh \\n@sontungmtp777\\n\\n#sontungmtp #theresnooneatall\\n#stanworld #backtoswsch,) \n", + "6 (the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,) \n", + "5 (the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,) \n", + "4 (the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,) \n", + "3 (the algebra requirement needed to graduate is the most failed subject in community colleges. ,) \n", + "19 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "\n", + " text_B \n", + "0 (@mrs_al_13 @donorschoose @amazon hi, hello, howdy! happy #sundayvibes it’s #backtoschool & my cl,) \n", + "2 (@kamalaharris ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, are t,) \n", + "1 (@techmidschteach @amazon i'm a hs #specialeducation teacher working with cognitively impaired studen,) \n", + "11 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "18 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "17 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "16 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "15 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "14 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "13 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "12 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "10 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "9 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "8 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "7 (back to school with nhatthanh \\n@sontungmtp777\\n\\n#sontungmtp #theresnooneatall\\n#stanworld #backtoswsch,) \n", + "6 (the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,) \n", + "5 (the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,) \n", + "4 (the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,) \n", + "3 (the algebra requirement needed to graduate is the most failed subject in community colleges. ,) \n", + "19 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) " + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "jaccard_distance = 0.3\n", + "df_dups_text_30 = model.approxSimilarityJoin(df_hashed_text, df_hashed_text, jaccard_distance).filter(\"datasetA.id < datasetB.id\").select(\n", + " col(\"distCol\"),col(\"datasetA.org\").alias('org'),\n", + " col(\"datasetA.id\").alias(\"id_A\"),\n", + " col(\"datasetB.id\").alias(\"id_B\"), \n", + " col('datasetA.tweet_text').alias('text_A'),\n", + " col('datasetB.tweet_text').alias('text_B')) \n", + "df_dups_txt_30 = df_dups_text_30\n", + "df_dups_text_30.limit(20).toPandas().sort_values('distCol',ascending=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "876a8a3c-43cb-4d7f-8875-d219bd34d6a0", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "23/03/10 18:33:16 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:33:16 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:34:15 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:34:15 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:34:19 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:34:19 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:34:20 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:34:20 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:34:20 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:34:21 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:34:21 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:34:24 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:34:24 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:34:24 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:34:24 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:01 WARN org.apache.spark.deploy.yarn.YarnAllocator: Container from a bad node: container_1678398282650_0018_01_000015 on host: hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal. Exit status: 143. Diagnostics: [2023-03-10 18:35:01.744]Container killed on request. Exit code is 143\n", + "[2023-03-10 18:35:01.745]Container exited with a non-zero exit code 143. \n", + "[2023-03-10 18:35:01.746]Killed by external signal\n", + ".\n", + "23/03/10 18:35:01 WARN org.apache.spark.deploy.yarn.YarnAllocator: Container from a bad node: container_1678398282650_0018_01_000019 on host: hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal. Exit status: 143. Diagnostics: [2023-03-10 18:35:01.748]Container killed on request. Exit code is 143\n", + "[2023-03-10 18:35:01.753]Container exited with a non-zero exit code 143. \n", + "[2023-03-10 18:35:01.753]Killed by external signal\n", + ".\n", + "23/03/10 18:35:01 WARN org.apache.spark.scheduler.cluster.YarnSchedulerBackend$YarnSchedulerEndpoint: Requesting driver to remove executor 15 for reason Container from a bad node: container_1678398282650_0018_01_000015 on host: hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal. Exit status: 143. Diagnostics: [2023-03-10 18:35:01.744]Container killed on request. Exit code is 143\n", + "[2023-03-10 18:35:01.745]Container exited with a non-zero exit code 143. \n", + "[2023-03-10 18:35:01.746]Killed by external signal\n", + ".\n", + "23/03/10 18:35:01 WARN org.apache.spark.scheduler.cluster.YarnSchedulerBackend$YarnSchedulerEndpoint: Requesting driver to remove executor 19 for reason Container from a bad node: container_1678398282650_0018_01_000019 on host: hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal. Exit status: 143. Diagnostics: [2023-03-10 18:35:01.748]Container killed on request. Exit code is 143\n", + "[2023-03-10 18:35:01.753]Container exited with a non-zero exit code 143. \n", + "[2023-03-10 18:35:01.753]Killed by external signal\n", + ".\n", + "23/03/10 18:35:01 ERROR org.apache.spark.scheduler.cluster.YarnScheduler: Lost executor 15 on hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal: Container from a bad node: container_1678398282650_0018_01_000015 on host: hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal. Exit status: 143. Diagnostics: [2023-03-10 18:35:01.744]Container killed on request. Exit code is 143\n", + "[2023-03-10 18:35:01.745]Container exited with a non-zero exit code 143. \n", + "[2023-03-10 18:35:01.746]Killed by external signal\n", + ".\n", + "23/03/10 18:35:01 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 143.0 in stage 48.0 (TID 3366) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal executor 15): ExecutorLostFailure (executor 15 exited caused by one of the running tasks) Reason: Container from a bad node: container_1678398282650_0018_01_000015 on host: hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal. Exit status: 143. Diagnostics: [2023-03-10 18:35:01.744]Container killed on request. Exit code is 143\n", + "[2023-03-10 18:35:01.745]Container exited with a non-zero exit code 143. \n", + "[2023-03-10 18:35:01.746]Killed by external signal\n", + ".\n", + "23/03/10 18:35:01 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 105.0 in stage 50.0 (TID 3365) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal executor 15): ExecutorLostFailure (executor 15 exited caused by one of the running tasks) Reason: Container from a bad node: container_1678398282650_0018_01_000015 on host: hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal. Exit status: 143. Diagnostics: [2023-03-10 18:35:01.744]Container killed on request. Exit code is 143\n", + "[2023-03-10 18:35:01.745]Container exited with a non-zero exit code 143. \n", + "[2023-03-10 18:35:01.746]Killed by external signal\n", + ".\n", + "23/03/10 18:35:01 ERROR org.apache.spark.scheduler.cluster.YarnScheduler: Lost executor 19 on hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal: Container from a bad node: container_1678398282650_0018_01_000019 on host: hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal. Exit status: 143. Diagnostics: [2023-03-10 18:35:01.748]Container killed on request. Exit code is 143\n", + "[2023-03-10 18:35:01.753]Container exited with a non-zero exit code 143. \n", + "[2023-03-10 18:35:01.753]Killed by external signal\n", + ".\n", + "23/03/10 18:35:01 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 144.0 in stage 48.0 (TID 3367) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal executor 19): ExecutorLostFailure (executor 19 exited caused by one of the running tasks) Reason: Container from a bad node: container_1678398282650_0018_01_000019 on host: hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal. Exit status: 143. Diagnostics: [2023-03-10 18:35:01.748]Container killed on request. Exit code is 143\n", + "[2023-03-10 18:35:01.753]Container exited with a non-zero exit code 143. \n", + "[2023-03-10 18:35:01.753]Killed by external signal\n", + ".\n", + "23/03/10 18:35:01 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 107.0 in stage 50.0 (TID 3375) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal executor 19): ExecutorLostFailure (executor 19 exited caused by one of the running tasks) Reason: Container from a bad node: container_1678398282650_0018_01_000019 on host: hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal. Exit status: 143. Diagnostics: [2023-03-10 18:35:01.748]Container killed on request. Exit code is 143\n", + "[2023-03-10 18:35:01.753]Container exited with a non-zero exit code 143. \n", + "[2023-03-10 18:35:01.753]Killed by external signal\n", + ".\n", + "23/03/10 18:35:02 WARN org.apache.spark.scheduler.cluster.YarnSchedulerBackend$YarnSchedulerEndpoint: Requesting driver to remove executor 20 for reason Container marked as failed: container_1678398282650_0018_01_000020 on host: hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal. Exit status: -100. Diagnostics: Container released on a *lost* node.\n", + "23/03/10 18:35:02 WARN org.apache.spark.scheduler.cluster.YarnSchedulerBackend$YarnSchedulerEndpoint: Requesting driver to remove executor 21 for reason Container marked as failed: container_1678398282650_0018_01_000021 on host: hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal. Exit status: -100. Diagnostics: Container released on a *lost* node.\n", + "23/03/10 18:35:24 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:24 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:24 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:24 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:29 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:29 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:29 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:29 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:29 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:29 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:29 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:29 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:33 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:33 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:33 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:33 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:33 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:33 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:33 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:33 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:42 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 2.0 in stage 52.0 (TID 3815) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-ztmk.c.msca-bdp-students.internal executor 4): FetchFailed(BlockManagerId(15, hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal, 7337, None), shuffleId=13, mapIndex=2, mapId=3001, reduceId=7, message=\n", + "org.apache.spark.shuffle.FetchFailedException: Connecting to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337 failed in the last 4750 ms, fail this connection directly\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:777)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:690)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:70)\n", + "\tat org.apache.spark.util.CompletionIterator.next(CompletionIterator.scala:29)\n", + "\tat scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)\n", + "\tat scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:31)\n", + "\tat org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.sql.execution.SparkPlan.$anonfun$getByteArrayRdd$1(SparkPlan.scala:345)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2$adapted(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)\n", + "\tat org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)\n", + "\tat org.apache.spark.rdd.RDD.iterator(RDD.scala:337)\n", + "\tat org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)\n", + "\tat org.apache.spark.scheduler.Task.run(Task.scala:131)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$3(Executor.scala:505)\n", + "\tat org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1439)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:508)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat java.lang.Thread.run(Thread.java:750)\n", + "Caused by: java.io.IOException: Connecting to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337 failed in the last 4750 ms, fail this connection directly\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:214)\n", + "\tat org.apache.spark.network.shuffle.ExternalBlockStoreClient.lambda$fetchBlocks$0(ExternalBlockStoreClient.java:105)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:153)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.lambda$initiateRetry$0(RetryingBlockFetcher.java:181)\n", + "\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n", + "\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n", + "\t... 1 more\n", + "\n", + ")\n", + "23/03/10 18:35:42 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 15.0 in stage 52.0 (TID 3816) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-ztmk.c.msca-bdp-students.internal executor 4): FetchFailed(BlockManagerId(19, hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal, 7337, None), shuffleId=13, mapIndex=15, mapId=3014, reduceId=5, message=\n", + "org.apache.spark.shuffle.FetchFailedException: Failed to connect to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:777)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:690)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:70)\n", + "\tat org.apache.spark.util.CompletionIterator.next(CompletionIterator.scala:29)\n", + "\tat scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)\n", + "\tat scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:31)\n", + "\tat org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.sql.execution.SparkPlan.$anonfun$getByteArrayRdd$1(SparkPlan.scala:345)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2$adapted(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)\n", + "\tat org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)\n", + "\tat org.apache.spark.rdd.RDD.iterator(RDD.scala:337)\n", + "\tat org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)\n", + "\tat org.apache.spark.scheduler.Task.run(Task.scala:131)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$3(Executor.scala:505)\n", + "\tat org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1439)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:508)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat java.lang.Thread.run(Thread.java:750)\n", + "Caused by: java.io.IOException: Failed to connect to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:287)\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:218)\n", + "\tat org.apache.spark.network.shuffle.ExternalBlockStoreClient.lambda$fetchBlocks$0(ExternalBlockStoreClient.java:105)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:153)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.lambda$initiateRetry$0(RetryingBlockFetcher.java:181)\n", + "\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n", + "\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n", + "\t... 1 more\n", + "Caused by: java.net.UnknownHostException: hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal\n", + "\tat java.net.InetAddress$CachedAddresses.get(InetAddress.java:764)\n", + "\tat java.net.InetAddress.getAllByName0(InetAddress.java:1282)\n", + "\tat java.net.InetAddress.getAllByName(InetAddress.java:1140)\n", + "\tat java.net.InetAddress.getAllByName(InetAddress.java:1064)\n", + "\tat java.net.InetAddress.getByName(InetAddress.java:1014)\n", + "\tat io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:156)\n", + "\tat io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:153)\n", + "\tat java.security.AccessController.doPrivileged(Native Method)\n", + "\tat io.netty.util.internal.SocketUtils.addressByName(SocketUtils.java:153)\n", + "\tat io.netty.resolver.DefaultNameResolver.doResolve(DefaultNameResolver.java:41)\n", + "\tat io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:61)\n", + "\tat io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:53)\n", + "\tat io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:55)\n", + "\tat io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:31)\n", + "\tat io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:106)\n", + "\tat io.netty.bootstrap.Bootstrap.doResolveAndConnect0(Bootstrap.java:206)\n", + "\tat io.netty.bootstrap.Bootstrap.access$000(Bootstrap.java:46)\n", + "\tat io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:180)\n", + "\tat io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:166)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:577)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:551)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:490)\n", + "\tat io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:615)\n", + "\tat io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:604)\n", + "\tat io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)\n", + "\tat io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:84)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.safeSetSuccess(AbstractChannel.java:984)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:504)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:417)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:474)\n", + "\tat io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)\n", + "\tat io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)\n", + "\tat io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n", + "\t... 2 more\n", + "\n", + ")\n", + "23/03/10 18:35:42 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 21.0 in stage 52.0 (TID 3817) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-nvn8.c.msca-bdp-students.internal executor 16): FetchFailed(BlockManagerId(15, hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal, 7337, None), shuffleId=13, mapIndex=21, mapId=3020, reduceId=2, message=\n", + "org.apache.spark.shuffle.FetchFailedException: Failed to connect to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:777)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:690)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:70)\n", + "\tat org.apache.spark.util.CompletionIterator.next(CompletionIterator.scala:29)\n", + "\tat scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)\n", + "\tat scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:31)\n", + "\tat org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.sql.execution.SparkPlan.$anonfun$getByteArrayRdd$1(SparkPlan.scala:345)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2$adapted(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)\n", + "\tat org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)\n", + "\tat org.apache.spark.rdd.RDD.iterator(RDD.scala:337)\n", + "\tat org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)\n", + "\tat org.apache.spark.scheduler.Task.run(Task.scala:131)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$3(Executor.scala:505)\n", + "\tat org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1439)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:508)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat java.lang.Thread.run(Thread.java:750)\n", + "Caused by: java.io.IOException: Failed to connect to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:287)\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:218)\n", + "\tat org.apache.spark.network.shuffle.ExternalBlockStoreClient.lambda$fetchBlocks$0(ExternalBlockStoreClient.java:105)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:153)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.lambda$initiateRetry$0(RetryingBlockFetcher.java:181)\n", + "\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n", + "\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n", + "\t... 1 more\n", + "Caused by: java.net.UnknownHostException: hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal\n", + "\tat java.net.InetAddress$CachedAddresses.get(InetAddress.java:764)\n", + "\tat java.net.InetAddress.getAllByName0(InetAddress.java:1282)\n", + "\tat java.net.InetAddress.getAllByName(InetAddress.java:1140)\n", + "\tat java.net.InetAddress.getAllByName(InetAddress.java:1064)\n", + "\tat java.net.InetAddress.getByName(InetAddress.java:1014)\n", + "\tat io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:156)\n", + "\tat io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:153)\n", + "\tat java.security.AccessController.doPrivileged(Native Method)\n", + "\tat io.netty.util.internal.SocketUtils.addressByName(SocketUtils.java:153)\n", + "\tat io.netty.resolver.DefaultNameResolver.doResolve(DefaultNameResolver.java:41)\n", + "\tat io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:61)\n", + "\tat io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:53)\n", + "\tat io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:55)\n", + "\tat io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:31)\n", + "\tat io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:106)\n", + "\tat io.netty.bootstrap.Bootstrap.doResolveAndConnect0(Bootstrap.java:206)\n", + "\tat io.netty.bootstrap.Bootstrap.access$000(Bootstrap.java:46)\n", + "\tat io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:180)\n", + "\tat io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:166)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:577)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:551)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:490)\n", + "\tat io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:615)\n", + "\tat io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:604)\n", + "\tat io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)\n", + "\tat io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:84)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.safeSetSuccess(AbstractChannel.java:984)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:504)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:417)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:474)\n", + "\tat io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)\n", + "\tat io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)\n", + "\tat io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n", + "\t... 2 more\n", + "\n", + ")\n", + "23/03/10 18:35:42 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 34.0 in stage 52.0 (TID 3818) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-2w12.c.msca-bdp-students.internal executor 5): FetchFailed(BlockManagerId(19, hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal, 7337, None), shuffleId=13, mapIndex=34, mapId=3033, reduceId=4, message=\n", + "org.apache.spark.shuffle.FetchFailedException: Failed to connect to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:777)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:690)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:70)\n", + "\tat org.apache.spark.util.CompletionIterator.next(CompletionIterator.scala:29)\n", + "\tat scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)\n", + "\tat scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:31)\n", + "\tat org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.sql.execution.SparkPlan.$anonfun$getByteArrayRdd$1(SparkPlan.scala:345)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2$adapted(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)\n", + "\tat org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)\n", + "\tat org.apache.spark.rdd.RDD.iterator(RDD.scala:337)\n", + "\tat org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)\n", + "\tat org.apache.spark.scheduler.Task.run(Task.scala:131)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$3(Executor.scala:505)\n", + "\tat org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1439)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:508)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat java.lang.Thread.run(Thread.java:750)\n", + "Caused by: java.io.IOException: Failed to connect to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:287)\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:218)\n", + "\tat org.apache.spark.network.shuffle.ExternalBlockStoreClient.lambda$fetchBlocks$0(ExternalBlockStoreClient.java:105)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:153)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.lambda$initiateRetry$0(RetryingBlockFetcher.java:181)\n", + "\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n", + "\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n", + "\t... 1 more\n", + "Caused by: java.net.UnknownHostException: hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal\n", + "\tat java.net.InetAddress$CachedAddresses.get(InetAddress.java:764)\n", + "\tat java.net.InetAddress.getAllByName0(InetAddress.java:1282)\n", + "\tat java.net.InetAddress.getAllByName(InetAddress.java:1140)\n", + "\tat java.net.InetAddress.getAllByName(InetAddress.java:1064)\n", + "\tat java.net.InetAddress.getByName(InetAddress.java:1014)\n", + "\tat io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:156)\n", + "\tat io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:153)\n", + "\tat java.security.AccessController.doPrivileged(Native Method)\n", + "\tat io.netty.util.internal.SocketUtils.addressByName(SocketUtils.java:153)\n", + "\tat io.netty.resolver.DefaultNameResolver.doResolve(DefaultNameResolver.java:41)\n", + "\tat io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:61)\n", + "\tat io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:53)\n", + "\tat io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:55)\n", + "\tat io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:31)\n", + "\tat io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:106)\n", + "\tat io.netty.bootstrap.Bootstrap.doResolveAndConnect0(Bootstrap.java:206)\n", + "\tat io.netty.bootstrap.Bootstrap.access$000(Bootstrap.java:46)\n", + "\tat io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:180)\n", + "\tat io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:166)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:577)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:551)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:490)\n", + "\tat io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:615)\n", + "\tat io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:604)\n", + "\tat io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)\n", + "\tat io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:84)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.safeSetSuccess(AbstractChannel.java:984)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:504)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:417)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:474)\n", + "\tat io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)\n", + "\tat io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)\n", + "\tat io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n", + "\t... 2 more\n", + "\n", + ")\n", + "23/03/10 18:35:42 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 39.0 in stage 52.0 (TID 3819) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-g03c.c.msca-bdp-students.internal executor 8): FetchFailed(BlockManagerId(15, hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal, 7337, None), shuffleId=13, mapIndex=39, mapId=3063, reduceId=3, message=\n", + "org.apache.spark.shuffle.FetchFailedException: Failed to connect to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:777)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:690)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:70)\n", + "\tat org.apache.spark.util.CompletionIterator.next(CompletionIterator.scala:29)\n", + "\tat scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)\n", + "\tat scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:31)\n", + "\tat org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.sql.execution.SparkPlan.$anonfun$getByteArrayRdd$1(SparkPlan.scala:345)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2$adapted(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)\n", + "\tat org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)\n", + "\tat org.apache.spark.rdd.RDD.iterator(RDD.scala:337)\n", + "\tat org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)\n", + "\tat org.apache.spark.scheduler.Task.run(Task.scala:131)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$3(Executor.scala:505)\n", + "\tat org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1439)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:508)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat java.lang.Thread.run(Thread.java:750)\n", + "Caused by: java.io.IOException: Failed to connect to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:287)\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:218)\n", + "\tat org.apache.spark.network.shuffle.ExternalBlockStoreClient.lambda$fetchBlocks$0(ExternalBlockStoreClient.java:105)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:153)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.lambda$initiateRetry$0(RetryingBlockFetcher.java:181)\n", + "\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n", + "\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n", + "\t... 1 more\n", + "Caused by: java.net.UnknownHostException: hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal\n", + "\tat java.net.InetAddress$CachedAddresses.get(InetAddress.java:764)\n", + "\tat java.net.InetAddress.getAllByName0(InetAddress.java:1282)\n", + "\tat java.net.InetAddress.getAllByName(InetAddress.java:1140)\n", + "\tat java.net.InetAddress.getAllByName(InetAddress.java:1064)\n", + "\tat java.net.InetAddress.getByName(InetAddress.java:1014)\n", + "\tat io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:156)\n", + "\tat io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:153)\n", + "\tat java.security.AccessController.doPrivileged(Native Method)\n", + "\tat io.netty.util.internal.SocketUtils.addressByName(SocketUtils.java:153)\n", + "\tat io.netty.resolver.DefaultNameResolver.doResolve(DefaultNameResolver.java:41)\n", + "\tat io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:61)\n", + "\tat io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:53)\n", + "\tat io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:55)\n", + "\tat io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:31)\n", + "\tat io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:106)\n", + "\tat io.netty.bootstrap.Bootstrap.doResolveAndConnect0(Bootstrap.java:206)\n", + "\tat io.netty.bootstrap.Bootstrap.access$000(Bootstrap.java:46)\n", + "\tat io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:180)\n", + "\tat io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:166)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:577)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:551)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:490)\n", + "\tat io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:615)\n", + "\tat io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:604)\n", + "\tat io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)\n", + "\tat io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:84)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.safeSetSuccess(AbstractChannel.java:984)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:504)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:417)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:474)\n", + "\tat io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)\n", + "\tat io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)\n", + "\tat io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n", + "\t... 2 more\n", + "\n", + ")\n", + "23/03/10 18:35:42 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 43.0 in stage 52.0 (TID 3820) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-qwpk.c.msca-bdp-students.internal executor 10): FetchFailed(BlockManagerId(19, hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal, 7337, None), shuffleId=13, mapIndex=43, mapId=3067, reduceId=0, message=\n", + "org.apache.spark.shuffle.FetchFailedException: Failed to connect to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:777)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:690)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:70)\n", + "\tat org.apache.spark.util.CompletionIterator.next(CompletionIterator.scala:29)\n", + "\tat scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)\n", + "\tat scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:31)\n", + "\tat org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.sql.execution.SparkPlan.$anonfun$getByteArrayRdd$1(SparkPlan.scala:345)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2$adapted(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)\n", + "\tat org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)\n", + "\tat org.apache.spark.rdd.RDD.iterator(RDD.scala:337)\n", + "\tat org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)\n", + "\tat org.apache.spark.scheduler.Task.run(Task.scala:131)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$3(Executor.scala:505)\n", + "\tat org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1439)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:508)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat java.lang.Thread.run(Thread.java:750)\n", + "Caused by: java.io.IOException: Failed to connect to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:287)\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:218)\n", + "\tat org.apache.spark.network.shuffle.ExternalBlockStoreClient.lambda$fetchBlocks$0(ExternalBlockStoreClient.java:105)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:153)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.lambda$initiateRetry$0(RetryingBlockFetcher.java:181)\n", + "\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n", + "\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n", + "\t... 1 more\n", + "Caused by: java.net.UnknownHostException: hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal\n", + "\tat java.net.InetAddress$CachedAddresses.get(InetAddress.java:764)\n", + "\tat java.net.InetAddress.getAllByName0(InetAddress.java:1282)\n", + "\tat java.net.InetAddress.getAllByName(InetAddress.java:1140)\n", + "\tat java.net.InetAddress.getAllByName(InetAddress.java:1064)\n", + "\tat java.net.InetAddress.getByName(InetAddress.java:1014)\n", + "\tat io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:156)\n", + "\tat io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:153)\n", + "\tat java.security.AccessController.doPrivileged(Native Method)\n", + "\tat io.netty.util.internal.SocketUtils.addressByName(SocketUtils.java:153)\n", + "\tat io.netty.resolver.DefaultNameResolver.doResolve(DefaultNameResolver.java:41)\n", + "\tat io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:61)\n", + "\tat io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:53)\n", + "\tat io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:55)\n", + "\tat io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:31)\n", + "\tat io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:106)\n", + "\tat io.netty.bootstrap.Bootstrap.doResolveAndConnect0(Bootstrap.java:206)\n", + "\tat io.netty.bootstrap.Bootstrap.access$000(Bootstrap.java:46)\n", + "\tat io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:180)\n", + "\tat io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:166)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:577)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:551)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:490)\n", + "\tat io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:615)\n", + "\tat io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:604)\n", + "\tat io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)\n", + "\tat io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:84)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.safeSetSuccess(AbstractChannel.java:984)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:504)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:417)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:474)\n", + "\tat io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)\n", + "\tat io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)\n", + "\tat io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n", + "\t... 2 more\n", + "\n", + ")\n", + "23/03/10 18:35:42 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 54.0 in stage 52.0 (TID 3821) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-hkx2.c.msca-bdp-students.internal executor 18): FetchFailed(BlockManagerId(15, hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal, 7337, None), shuffleId=13, mapIndex=54, mapId=3100, reduceId=12, message=\n", + "org.apache.spark.shuffle.FetchFailedException: Failed to connect to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:777)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:690)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:70)\n", + "\tat org.apache.spark.util.CompletionIterator.next(CompletionIterator.scala:29)\n", + "\tat scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)\n", + "\tat scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:31)\n", + "\tat org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.sql.execution.SparkPlan.$anonfun$getByteArrayRdd$1(SparkPlan.scala:345)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2$adapted(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)\n", + "\tat org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)\n", + "\tat org.apache.spark.rdd.RDD.iterator(RDD.scala:337)\n", + "\tat org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)\n", + "\tat org.apache.spark.scheduler.Task.run(Task.scala:131)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$3(Executor.scala:505)\n", + "\tat org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1439)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:508)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat java.lang.Thread.run(Thread.java:750)\n", + "Caused by: java.io.IOException: Failed to connect to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:287)\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:218)\n", + "\tat org.apache.spark.network.shuffle.ExternalBlockStoreClient.lambda$fetchBlocks$0(ExternalBlockStoreClient.java:105)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:153)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.lambda$initiateRetry$0(RetryingBlockFetcher.java:181)\n", + "\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n", + "\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n", + "\t... 1 more\n", + "Caused by: java.net.UnknownHostException: hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal\n", + "\tat java.net.InetAddress$CachedAddresses.get(InetAddress.java:764)\n", + "\tat java.net.InetAddress.getAllByName0(InetAddress.java:1282)\n", + "\tat java.net.InetAddress.getAllByName(InetAddress.java:1140)\n", + "\tat java.net.InetAddress.getAllByName(InetAddress.java:1064)\n", + "\tat java.net.InetAddress.getByName(InetAddress.java:1014)\n", + "\tat io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:156)\n", + "\tat io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:153)\n", + "\tat java.security.AccessController.doPrivileged(Native Method)\n", + "\tat io.netty.util.internal.SocketUtils.addressByName(SocketUtils.java:153)\n", + "\tat io.netty.resolver.DefaultNameResolver.doResolve(DefaultNameResolver.java:41)\n", + "\tat io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:61)\n", + "\tat io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:53)\n", + "\tat io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:55)\n", + "\tat io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:31)\n", + "\tat io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:106)\n", + "\tat io.netty.bootstrap.Bootstrap.doResolveAndConnect0(Bootstrap.java:206)\n", + "\tat io.netty.bootstrap.Bootstrap.access$000(Bootstrap.java:46)\n", + "\tat io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:180)\n", + "\tat io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:166)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:577)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:551)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:490)\n", + "\tat io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:615)\n", + "\tat io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:604)\n", + "\tat io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)\n", + "\tat io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:84)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.safeSetSuccess(AbstractChannel.java:984)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:504)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:417)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:474)\n", + "\tat io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)\n", + "\tat io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)\n", + "\tat io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n", + "\t... 2 more\n", + "\n", + ")\n", + "23/03/10 18:35:42 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 58.0 in stage 52.0 (TID 3822) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-g03c.c.msca-bdp-students.internal executor 8): FetchFailed(BlockManagerId(19, hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal, 7337, None), shuffleId=13, mapIndex=58, mapId=3106, reduceId=0, message=\n", + "org.apache.spark.shuffle.FetchFailedException: Connecting to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337 failed in the last 4750 ms, fail this connection directly\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:777)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:690)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:70)\n", + "\tat org.apache.spark.util.CompletionIterator.next(CompletionIterator.scala:29)\n", + "\tat scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)\n", + "\tat scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:31)\n", + "\tat org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.sql.execution.SparkPlan.$anonfun$getByteArrayRdd$1(SparkPlan.scala:345)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2$adapted(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)\n", + "\tat org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)\n", + "\tat org.apache.spark.rdd.RDD.iterator(RDD.scala:337)\n", + "\tat org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)\n", + "\tat org.apache.spark.scheduler.Task.run(Task.scala:131)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$3(Executor.scala:505)\n", + "\tat org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1439)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:508)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat java.lang.Thread.run(Thread.java:750)\n", + "Caused by: java.io.IOException: Connecting to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337 failed in the last 4750 ms, fail this connection directly\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:214)\n", + "\tat org.apache.spark.network.shuffle.ExternalBlockStoreClient.lambda$fetchBlocks$0(ExternalBlockStoreClient.java:105)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:153)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.lambda$initiateRetry$0(RetryingBlockFetcher.java:181)\n", + "\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n", + "\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n", + "\t... 1 more\n", + "\n", + ")\n", + "23/03/10 18:35:43 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 68.0 in stage 52.0 (TID 3823) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-nvn8.c.msca-bdp-students.internal executor 1): FetchFailed(BlockManagerId(15, hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal, 7337, None), shuffleId=13, mapIndex=68, mapId=3138, reduceId=6, message=\n", + "org.apache.spark.shuffle.FetchFailedException: Failed to connect to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:777)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:690)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:70)\n", + "\tat org.apache.spark.util.CompletionIterator.next(CompletionIterator.scala:29)\n", + "\tat scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)\n", + "\tat scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:31)\n", + "\tat org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.sql.execution.SparkPlan.$anonfun$getByteArrayRdd$1(SparkPlan.scala:345)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2$adapted(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)\n", + "\tat org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)\n", + "\tat org.apache.spark.rdd.RDD.iterator(RDD.scala:337)\n", + "\tat org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)\n", + "\tat org.apache.spark.scheduler.Task.run(Task.scala:131)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$3(Executor.scala:505)\n", + "\tat org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1439)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:508)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat java.lang.Thread.run(Thread.java:750)\n", + "Caused by: java.io.IOException: Failed to connect to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:287)\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:218)\n", + "\tat org.apache.spark.network.shuffle.ExternalBlockStoreClient.lambda$fetchBlocks$0(ExternalBlockStoreClient.java:105)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:153)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.lambda$initiateRetry$0(RetryingBlockFetcher.java:181)\n", + "\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n", + "\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n", + "\t... 1 more\n", + "Caused by: java.net.UnknownHostException: hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal\n", + "\tat java.net.InetAddress$CachedAddresses.get(InetAddress.java:764)\n", + "\tat java.net.InetAddress.getAllByName0(InetAddress.java:1282)\n", + "\tat java.net.InetAddress.getAllByName(InetAddress.java:1140)\n", + "\tat java.net.InetAddress.getAllByName(InetAddress.java:1064)\n", + "\tat java.net.InetAddress.getByName(InetAddress.java:1014)\n", + "\tat io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:156)\n", + "\tat io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:153)\n", + "\tat java.security.AccessController.doPrivileged(Native Method)\n", + "\tat io.netty.util.internal.SocketUtils.addressByName(SocketUtils.java:153)\n", + "\tat io.netty.resolver.DefaultNameResolver.doResolve(DefaultNameResolver.java:41)\n", + "\tat io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:61)\n", + "\tat io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:53)\n", + "\tat io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:55)\n", + "\tat io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:31)\n", + "\tat io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:106)\n", + "\tat io.netty.bootstrap.Bootstrap.doResolveAndConnect0(Bootstrap.java:206)\n", + "\tat io.netty.bootstrap.Bootstrap.access$000(Bootstrap.java:46)\n", + "\tat io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:180)\n", + "\tat io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:166)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:577)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:551)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:490)\n", + "\tat io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:615)\n", + "\tat io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:604)\n", + "\tat io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)\n", + "\tat io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:84)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.safeSetSuccess(AbstractChannel.java:984)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:504)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:417)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:474)\n", + "\tat io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)\n", + "\tat io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)\n", + "\tat io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n", + "\t... 2 more\n", + "\n", + ")\n", + "23/03/10 18:35:43 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 72.0 in stage 52.0 (TID 3824) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-q637.c.msca-bdp-students.internal executor 9): FetchFailed(BlockManagerId(19, hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal, 7337, None), shuffleId=13, mapIndex=72, mapId=3144, reduceId=0, message=\n", + "org.apache.spark.shuffle.FetchFailedException: Failed to connect to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:777)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:690)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:70)\n", + "\tat org.apache.spark.util.CompletionIterator.next(CompletionIterator.scala:29)\n", + "\tat scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)\n", + "\tat scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:31)\n", + "\tat org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.sql.execution.SparkPlan.$anonfun$getByteArrayRdd$1(SparkPlan.scala:345)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2$adapted(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)\n", + "\tat org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)\n", + "\tat org.apache.spark.rdd.RDD.iterator(RDD.scala:337)\n", + "\tat org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)\n", + "\tat org.apache.spark.scheduler.Task.run(Task.scala:131)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$3(Executor.scala:505)\n", + "\tat org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1439)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:508)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat java.lang.Thread.run(Thread.java:750)\n", + "Caused by: java.io.IOException: Failed to connect to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:287)\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:218)\n", + "\tat org.apache.spark.network.shuffle.ExternalBlockStoreClient.lambda$fetchBlocks$0(ExternalBlockStoreClient.java:105)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:153)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.lambda$initiateRetry$0(RetryingBlockFetcher.java:181)\n", + "\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n", + "\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n", + "\t... 1 more\n", + "Caused by: java.net.UnknownHostException: hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal\n", + "\tat java.net.InetAddress$CachedAddresses.get(InetAddress.java:764)\n", + "\tat java.net.InetAddress.getAllByName0(InetAddress.java:1282)\n", + "\tat java.net.InetAddress.getAllByName(InetAddress.java:1140)\n", + "\tat java.net.InetAddress.getAllByName(InetAddress.java:1064)\n", + "\tat java.net.InetAddress.getByName(InetAddress.java:1014)\n", + "\tat io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:156)\n", + "\tat io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:153)\n", + "\tat java.security.AccessController.doPrivileged(Native Method)\n", + "\tat io.netty.util.internal.SocketUtils.addressByName(SocketUtils.java:153)\n", + "\tat io.netty.resolver.DefaultNameResolver.doResolve(DefaultNameResolver.java:41)\n", + "\tat io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:61)\n", + "\tat io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:53)\n", + "\tat io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:55)\n", + "\tat io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:31)\n", + "\tat io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:106)\n", + "\tat io.netty.bootstrap.Bootstrap.doResolveAndConnect0(Bootstrap.java:206)\n", + "\tat io.netty.bootstrap.Bootstrap.access$000(Bootstrap.java:46)\n", + "\tat io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:180)\n", + "\tat io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:166)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:577)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:551)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:490)\n", + "\tat io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:615)\n", + "\tat io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:604)\n", + "\tat io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)\n", + "\tat io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:84)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.safeSetSuccess(AbstractChannel.java:984)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:504)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:417)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:474)\n", + "\tat io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)\n", + "\tat io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)\n", + "\tat io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n", + "\t... 2 more\n", + "\n", + ")\n", + "23/03/10 18:35:43 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 81.0 in stage 52.0 (TID 3825) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-qwpk.c.msca-bdp-students.internal executor 13): FetchFailed(BlockManagerId(15, hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal, 7337, None), shuffleId=13, mapIndex=81, mapId=3178, reduceId=2, message=\n", + "org.apache.spark.shuffle.FetchFailedException: Failed to connect to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:777)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:690)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:70)\n", + "\tat org.apache.spark.util.CompletionIterator.next(CompletionIterator.scala:29)\n", + "\tat scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)\n", + "\tat scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:31)\n", + "\tat org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.sql.execution.SparkPlan.$anonfun$getByteArrayRdd$1(SparkPlan.scala:345)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2$adapted(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)\n", + "\tat org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)\n", + "\tat org.apache.spark.rdd.RDD.iterator(RDD.scala:337)\n", + "\tat org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)\n", + "\tat org.apache.spark.scheduler.Task.run(Task.scala:131)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$3(Executor.scala:505)\n", + "\tat org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1439)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:508)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat java.lang.Thread.run(Thread.java:750)\n", + "Caused by: java.io.IOException: Failed to connect to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:287)\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:218)\n", + "\tat org.apache.spark.network.shuffle.ExternalBlockStoreClient.lambda$fetchBlocks$0(ExternalBlockStoreClient.java:105)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:153)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.lambda$initiateRetry$0(RetryingBlockFetcher.java:181)\n", + "\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n", + "\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n", + "\t... 1 more\n", + "Caused by: java.net.UnknownHostException: hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal\n", + "\tat java.net.InetAddress$CachedAddresses.get(InetAddress.java:764)\n", + "\tat java.net.InetAddress.getAllByName0(InetAddress.java:1282)\n", + "\tat java.net.InetAddress.getAllByName(InetAddress.java:1140)\n", + "\tat java.net.InetAddress.getAllByName(InetAddress.java:1064)\n", + "\tat java.net.InetAddress.getByName(InetAddress.java:1014)\n", + "\tat io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:156)\n", + "\tat io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:153)\n", + "\tat java.security.AccessController.doPrivileged(Native Method)\n", + "\tat io.netty.util.internal.SocketUtils.addressByName(SocketUtils.java:153)\n", + "\tat io.netty.resolver.DefaultNameResolver.doResolve(DefaultNameResolver.java:41)\n", + "\tat io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:61)\n", + "\tat io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:53)\n", + "\tat io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:55)\n", + "\tat io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:31)\n", + "\tat io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:106)\n", + "\tat io.netty.bootstrap.Bootstrap.doResolveAndConnect0(Bootstrap.java:206)\n", + "\tat io.netty.bootstrap.Bootstrap.access$000(Bootstrap.java:46)\n", + "\tat io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:180)\n", + "\tat io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:166)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:577)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:551)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:490)\n", + "\tat io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:615)\n", + "\tat io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:604)\n", + "\tat io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)\n", + "\tat io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:84)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.safeSetSuccess(AbstractChannel.java:984)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:504)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:417)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:474)\n", + "\tat io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)\n", + "\tat io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)\n", + "\tat io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n", + "\t... 2 more\n", + "\n", + ")\n", + "23/03/10 18:35:43 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 84.0 in stage 52.0 (TID 3826) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-qwpk.c.msca-bdp-students.internal executor 10): FetchFailed(BlockManagerId(19, hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal, 7337, None), shuffleId=13, mapIndex=84, mapId=3182, reduceId=3, message=\n", + "org.apache.spark.shuffle.FetchFailedException: Connecting to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337 failed in the last 4750 ms, fail this connection directly\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:777)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:690)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:70)\n", + "\tat org.apache.spark.util.CompletionIterator.next(CompletionIterator.scala:29)\n", + "\tat scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)\n", + "\tat scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:31)\n", + "\tat org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.sql.execution.SparkPlan.$anonfun$getByteArrayRdd$1(SparkPlan.scala:345)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2$adapted(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)\n", + "\tat org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)\n", + "\tat org.apache.spark.rdd.RDD.iterator(RDD.scala:337)\n", + "\tat org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)\n", + "\tat org.apache.spark.scheduler.Task.run(Task.scala:131)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$3(Executor.scala:505)\n", + "\tat org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1439)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:508)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat java.lang.Thread.run(Thread.java:750)\n", + "Caused by: java.io.IOException: Connecting to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337 failed in the last 4750 ms, fail this connection directly\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:214)\n", + "\tat org.apache.spark.network.shuffle.ExternalBlockStoreClient.lambda$fetchBlocks$0(ExternalBlockStoreClient.java:105)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:153)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.lambda$initiateRetry$0(RetryingBlockFetcher.java:181)\n", + "\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n", + "\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n", + "\t... 1 more\n", + "\n", + ")\n", + "23/03/10 18:35:43 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 104.0 in stage 52.0 (TID 3829) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-q637.c.msca-bdp-students.internal executor 9): FetchFailed(BlockManagerId(15, hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal, 7337, None), shuffleId=13, mapIndex=104, mapId=3251, reduceId=0, message=\n", + "org.apache.spark.shuffle.FetchFailedException: Connecting to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337 failed in the last 4750 ms, fail this connection directly\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:777)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:690)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:70)\n", + "\tat org.apache.spark.util.CompletionIterator.next(CompletionIterator.scala:29)\n", + "\tat scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)\n", + "\tat scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:31)\n", + "\tat org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.sql.execution.SparkPlan.$anonfun$getByteArrayRdd$1(SparkPlan.scala:345)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2$adapted(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)\n", + "\tat org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)\n", + "\tat org.apache.spark.rdd.RDD.iterator(RDD.scala:337)\n", + "\tat org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)\n", + "\tat org.apache.spark.scheduler.Task.run(Task.scala:131)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$3(Executor.scala:505)\n", + "\tat org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1439)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:508)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat java.lang.Thread.run(Thread.java:750)\n", + "Caused by: java.io.IOException: Connecting to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337 failed in the last 4750 ms, fail this connection directly\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:214)\n", + "\tat org.apache.spark.network.shuffle.ExternalBlockStoreClient.lambda$fetchBlocks$0(ExternalBlockStoreClient.java:105)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:153)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.lambda$initiateRetry$0(RetryingBlockFetcher.java:181)\n", + "\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n", + "\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n", + "\t... 1 more\n", + "\n", + ")\n", + "23/03/10 18:35:43 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 92.0 in stage 52.0 (TID 3827) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-htf6.c.msca-bdp-students.internal executor 2): FetchFailed(BlockManagerId(15, hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal, 7337, None), shuffleId=13, mapIndex=92, mapId=3213, reduceId=11, message=\n", + "org.apache.spark.shuffle.FetchFailedException: Connecting to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337 failed in the last 4750 ms, fail this connection directly\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:777)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:690)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:70)\n", + "\tat org.apache.spark.util.CompletionIterator.next(CompletionIterator.scala:29)\n", + "\tat scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)\n", + "\tat scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:31)\n", + "\tat org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.sql.execution.SparkPlan.$anonfun$getByteArrayRdd$1(SparkPlan.scala:345)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2$adapted(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)\n", + "\tat org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)\n", + "\tat org.apache.spark.rdd.RDD.iterator(RDD.scala:337)\n", + "\tat org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)\n", + "\tat org.apache.spark.scheduler.Task.run(Task.scala:131)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$3(Executor.scala:505)\n", + "\tat org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1439)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:508)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat java.lang.Thread.run(Thread.java:750)\n", + "Caused by: java.io.IOException: Connecting to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337 failed in the last 4750 ms, fail this connection directly\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:214)\n", + "\tat org.apache.spark.network.shuffle.ExternalBlockStoreClient.lambda$fetchBlocks$0(ExternalBlockStoreClient.java:105)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:153)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.lambda$initiateRetry$0(RetryingBlockFetcher.java:181)\n", + "\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n", + "\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n", + "\t... 1 more\n", + "\n", + ")\n", + "23/03/10 18:35:43 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 95.0 in stage 52.0 (TID 3828) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-2f0k.c.msca-bdp-students.internal executor 7): FetchFailed(BlockManagerId(19, hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal, 7337, None), shuffleId=13, mapIndex=95, mapId=3217, reduceId=3, message=\n", + "org.apache.spark.shuffle.FetchFailedException: Failed to connect to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:777)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:690)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:70)\n", + "\tat org.apache.spark.util.CompletionIterator.next(CompletionIterator.scala:29)\n", + "\tat scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)\n", + "\tat scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:31)\n", + "\tat org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.sql.execution.SparkPlan.$anonfun$getByteArrayRdd$1(SparkPlan.scala:345)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2$adapted(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)\n", + "\tat org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)\n", + "\tat org.apache.spark.rdd.RDD.iterator(RDD.scala:337)\n", + "\tat org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)\n", + "\tat org.apache.spark.scheduler.Task.run(Task.scala:131)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$3(Executor.scala:505)\n", + "\tat org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1439)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:508)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat java.lang.Thread.run(Thread.java:750)\n", + "Caused by: java.io.IOException: Failed to connect to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:287)\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:218)\n", + "\tat org.apache.spark.network.shuffle.ExternalBlockStoreClient.lambda$fetchBlocks$0(ExternalBlockStoreClient.java:105)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:153)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.lambda$initiateRetry$0(RetryingBlockFetcher.java:181)\n", + "\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n", + "\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n", + "\t... 1 more\n", + "Caused by: java.net.UnknownHostException: hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal\n", + "\tat java.net.InetAddress$CachedAddresses.get(InetAddress.java:764)\n", + "\tat java.net.InetAddress.getAllByName0(InetAddress.java:1282)\n", + "\tat java.net.InetAddress.getAllByName(InetAddress.java:1140)\n", + "\tat java.net.InetAddress.getAllByName(InetAddress.java:1064)\n", + "\tat java.net.InetAddress.getByName(InetAddress.java:1014)\n", + "\tat io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:156)\n", + "\tat io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:153)\n", + "\tat java.security.AccessController.doPrivileged(Native Method)\n", + "\tat io.netty.util.internal.SocketUtils.addressByName(SocketUtils.java:153)\n", + "\tat io.netty.resolver.DefaultNameResolver.doResolve(DefaultNameResolver.java:41)\n", + "\tat io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:61)\n", + "\tat io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:53)\n", + "\tat io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:55)\n", + "\tat io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:31)\n", + "\tat io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:106)\n", + "\tat io.netty.bootstrap.Bootstrap.doResolveAndConnect0(Bootstrap.java:206)\n", + "\tat io.netty.bootstrap.Bootstrap.access$000(Bootstrap.java:46)\n", + "\tat io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:180)\n", + "\tat io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:166)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:577)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:551)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:490)\n", + "\tat io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:615)\n", + "\tat io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:604)\n", + "\tat io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)\n", + "\tat io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:84)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.safeSetSuccess(AbstractChannel.java:984)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:504)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:417)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:474)\n", + "\tat io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)\n", + "\tat io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)\n", + "\tat io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n", + "\t... 2 more\n", + "\n", + ")\n", + "23/03/10 18:35:44 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 106.0 in stage 52.0 (TID 3835) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-qwpk.c.msca-bdp-students.internal executor 13): FetchFailed(BlockManagerId(19, hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal, 7337, None), shuffleId=13, mapIndex=106, mapId=3253, reduceId=14, message=\n", + "org.apache.spark.shuffle.FetchFailedException: Connecting to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337 failed in the last 4750 ms, fail this connection directly\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:777)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:690)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:70)\n", + "\tat org.apache.spark.util.CompletionIterator.next(CompletionIterator.scala:29)\n", + "\tat scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)\n", + "\tat scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:31)\n", + "\tat org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.sql.execution.SparkPlan.$anonfun$getByteArrayRdd$1(SparkPlan.scala:345)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2$adapted(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)\n", + "\tat org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)\n", + "\tat org.apache.spark.rdd.RDD.iterator(RDD.scala:337)\n", + "\tat org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)\n", + "\tat org.apache.spark.scheduler.Task.run(Task.scala:131)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$3(Executor.scala:505)\n", + "\tat org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1439)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:508)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat java.lang.Thread.run(Thread.java:750)\n", + "Caused by: java.io.IOException: Connecting to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337 failed in the last 4750 ms, fail this connection directly\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:214)\n", + "\tat org.apache.spark.network.shuffle.ExternalBlockStoreClient.lambda$fetchBlocks$0(ExternalBlockStoreClient.java:105)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:153)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.lambda$initiateRetry$0(RetryingBlockFetcher.java:181)\n", + "\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n", + "\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n", + "\t... 1 more\n", + "\n", + ")\n", + "23/03/10 18:35:44 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 119.0 in stage 52.0 (TID 3838) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-nvn8.c.msca-bdp-students.internal executor 16): FetchFailed(BlockManagerId(19, hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal, 7337, None), shuffleId=13, mapIndex=119, mapId=3291, reduceId=12, message=\n", + "org.apache.spark.shuffle.FetchFailedException: Connecting to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337 failed in the last 4750 ms, fail this connection directly\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:777)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:690)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:70)\n", + "\tat org.apache.spark.util.CompletionIterator.next(CompletionIterator.scala:29)\n", + "\tat scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)\n", + "\tat scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:31)\n", + "\tat org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.sql.execution.SparkPlan.$anonfun$getByteArrayRdd$1(SparkPlan.scala:345)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2$adapted(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)\n", + "\tat org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)\n", + "\tat org.apache.spark.rdd.RDD.iterator(RDD.scala:337)\n", + "\tat org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)\n", + "\tat org.apache.spark.scheduler.Task.run(Task.scala:131)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$3(Executor.scala:505)\n", + "\tat org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1439)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:508)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat java.lang.Thread.run(Thread.java:750)\n", + "Caused by: java.io.IOException: Connecting to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337 failed in the last 4750 ms, fail this connection directly\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:214)\n", + "\tat org.apache.spark.network.shuffle.ExternalBlockStoreClient.lambda$fetchBlocks$0(ExternalBlockStoreClient.java:105)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:153)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.lambda$initiateRetry$0(RetryingBlockFetcher.java:181)\n", + "\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n", + "\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n", + "\t... 1 more\n", + "\n", + ")\n", + "23/03/10 18:35:44 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 120.0 in stage 52.0 (TID 3840) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-nvn8.c.msca-bdp-students.internal executor 1): FetchFailed(BlockManagerId(15, hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal, 7337, None), shuffleId=13, mapIndex=120, mapId=3292, reduceId=0, message=\n", + "org.apache.spark.shuffle.FetchFailedException: Connecting to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337 failed in the last 4750 ms, fail this connection directly\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:777)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:690)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:70)\n", + "\tat org.apache.spark.util.CompletionIterator.next(CompletionIterator.scala:29)\n", + "\tat scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)\n", + "\tat scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:31)\n", + "\tat org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.sql.execution.SparkPlan.$anonfun$getByteArrayRdd$1(SparkPlan.scala:345)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2$adapted(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)\n", + "\tat org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)\n", + "\tat org.apache.spark.rdd.RDD.iterator(RDD.scala:337)\n", + "\tat org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)\n", + "\tat org.apache.spark.scheduler.Task.run(Task.scala:131)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$3(Executor.scala:505)\n", + "\tat org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1439)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:508)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat java.lang.Thread.run(Thread.java:750)\n", + "Caused by: java.io.IOException: Connecting to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337 failed in the last 4750 ms, fail this connection directly\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:214)\n", + "\tat org.apache.spark.network.shuffle.ExternalBlockStoreClient.lambda$fetchBlocks$0(ExternalBlockStoreClient.java:105)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:153)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.lambda$initiateRetry$0(RetryingBlockFetcher.java:181)\n", + "\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n", + "\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n", + "\t... 1 more\n", + "\n", + ")\n", + "23/03/10 18:35:44 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 132.0 in stage 52.0 (TID 3842) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-htf6.c.msca-bdp-students.internal executor 17): FetchFailed(BlockManagerId(19, hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal, 7337, None), shuffleId=13, mapIndex=132, mapId=3329, reduceId=9, message=\n", + "org.apache.spark.shuffle.FetchFailedException: Connecting to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337 failed in the last 4750 ms, fail this connection directly\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:777)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:690)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:70)\n", + "\tat org.apache.spark.util.CompletionIterator.next(CompletionIterator.scala:29)\n", + "\tat scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)\n", + "\tat scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:31)\n", + "\tat org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.sql.execution.SparkPlan.$anonfun$getByteArrayRdd$1(SparkPlan.scala:345)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2$adapted(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)\n", + "\tat org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)\n", + "\tat org.apache.spark.rdd.RDD.iterator(RDD.scala:337)\n", + "\tat org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)\n", + "\tat org.apache.spark.scheduler.Task.run(Task.scala:131)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$3(Executor.scala:505)\n", + "\tat org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1439)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:508)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat java.lang.Thread.run(Thread.java:750)\n", + "Caused by: java.io.IOException: Connecting to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337 failed in the last 4750 ms, fail this connection directly\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:214)\n", + "\tat org.apache.spark.network.shuffle.ExternalBlockStoreClient.lambda$fetchBlocks$0(ExternalBlockStoreClient.java:105)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:153)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.lambda$initiateRetry$0(RetryingBlockFetcher.java:181)\n", + "\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n", + "\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n", + "\t... 1 more\n", + "\n", + ")\n", + "23/03/10 18:35:44 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 131.0 in stage 52.0 (TID 3841) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-htf6.c.msca-bdp-students.internal executor 17): FetchFailed(BlockManagerId(15, hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal, 7337, None), shuffleId=13, mapIndex=131, mapId=3328, reduceId=8, message=\n", + "org.apache.spark.shuffle.FetchFailedException: Failed to connect to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:777)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:690)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:70)\n", + "\tat org.apache.spark.util.CompletionIterator.next(CompletionIterator.scala:29)\n", + "\tat scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)\n", + "\tat scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:31)\n", + "\tat org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.sql.execution.SparkPlan.$anonfun$getByteArrayRdd$1(SparkPlan.scala:345)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2$adapted(RDD.scala:898)\n", + "\tat org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)\n", + "\tat org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)\n", + "\tat org.apache.spark.rdd.RDD.iterator(RDD.scala:337)\n", + "\tat org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)\n", + "\tat org.apache.spark.scheduler.Task.run(Task.scala:131)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$3(Executor.scala:505)\n", + "\tat org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1439)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:508)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat java.lang.Thread.run(Thread.java:750)\n", + "Caused by: java.io.IOException: Failed to connect to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:287)\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:218)\n", + "\tat org.apache.spark.network.shuffle.ExternalBlockStoreClient.lambda$fetchBlocks$0(ExternalBlockStoreClient.java:105)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:153)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.lambda$initiateRetry$0(RetryingBlockFetcher.java:181)\n", + "\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n", + "\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n", + "\t... 1 more\n", + "Caused by: java.net.UnknownHostException: hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal\n", + "\tat java.net.InetAddress$CachedAddresses.get(InetAddress.java:764)\n", + "\tat java.net.InetAddress.getAllByName0(InetAddress.java:1282)\n", + "\tat java.net.InetAddress.getAllByName(InetAddress.java:1140)\n", + "\tat java.net.InetAddress.getAllByName(InetAddress.java:1064)\n", + "\tat java.net.InetAddress.getByName(InetAddress.java:1014)\n", + "\tat io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:156)\n", + "\tat io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:153)\n", + "\tat java.security.AccessController.doPrivileged(Native Method)\n", + "\tat io.netty.util.internal.SocketUtils.addressByName(SocketUtils.java:153)\n", + "\tat io.netty.resolver.DefaultNameResolver.doResolve(DefaultNameResolver.java:41)\n", + "\tat io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:61)\n", + "\tat io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:53)\n", + "\tat io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:55)\n", + "\tat io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:31)\n", + "\tat io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:106)\n", + "\tat io.netty.bootstrap.Bootstrap.doResolveAndConnect0(Bootstrap.java:206)\n", + "\tat io.netty.bootstrap.Bootstrap.access$000(Bootstrap.java:46)\n", + "\tat io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:180)\n", + "\tat io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:166)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:577)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:551)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:490)\n", + "\tat io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:615)\n", + "\tat io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:604)\n", + "\tat io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)\n", + "\tat io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:84)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.safeSetSuccess(AbstractChannel.java:984)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:504)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:417)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:474)\n", + "\tat io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)\n", + "\tat io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)\n", + "\tat io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n", + "\t... 2 more\n", + "\n", + ")\n", + "23/03/10 18:35:48 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:48 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:48 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:48 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:48 WARN org.apache.spark.scheduler.TaskSetManager: Lost task 0.0 in stage 54.0 (TID 3843) (hub-msca-bdp-dphub-students-kishorkumarreddy-sw-htf6.c.msca-bdp-students.internal executor 2): FetchFailed(BlockManagerId(19, hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal, 7337, None), shuffleId=15, mapIndex=9, mapId=3056, reduceId=0, message=\n", + "org.apache.spark.shuffle.FetchFailedException: Failed to connect to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:775)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:690)\n", + "\tat org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:70)\n", + "\tat org.apache.spark.util.CompletionIterator.next(CompletionIterator.scala:29)\n", + "\tat scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)\n", + "\tat scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:31)\n", + "\tat org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)\n", + "\tat scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)\n", + "\tat org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIteratorForCodegenStage7.sort_addToSorter_0$(Unknown Source)\n", + "\tat org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIteratorForCodegenStage7.processNext(Unknown Source)\n", + "\tat org.apache.spark.sql.execution.BufferedRowIterator.hasNext(BufferedRowIterator.java:43)\n", + "\tat org.apache.spark.sql.execution.WholeStageCodegenExec$$anon$1.hasNext(WholeStageCodegenExec.scala:755)\n", + "\tat org.apache.spark.sql.execution.window.WindowExecAbstract$$anon$1.fetchNextRow(WindowExecAbstract.scala:67)\n", + "\tat org.apache.spark.sql.execution.window.WindowExecAbstract$$anon$1.(WindowExecAbstract.scala:76)\n", + "\tat org.apache.spark.sql.execution.window.WindowExecAbstract.$anonfun$doExecute$3(WindowExecAbstract.scala:56)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitions$2(RDD.scala:863)\n", + "\tat org.apache.spark.rdd.RDD.$anonfun$mapPartitions$2$adapted(RDD.scala:863)\n", + "\tat org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)\n", + "\tat org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)\n", + "\tat org.apache.spark.rdd.RDD.iterator(RDD.scala:337)\n", + "\tat org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)\n", + "\tat org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)\n", + "\tat org.apache.spark.rdd.RDD.iterator(RDD.scala:337)\n", + "\tat org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)\n", + "\tat org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)\n", + "\tat org.apache.spark.rdd.RDD.iterator(RDD.scala:337)\n", + "\tat org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)\n", + "\tat org.apache.spark.scheduler.Task.run(Task.scala:131)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$3(Executor.scala:505)\n", + "\tat org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1439)\n", + "\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:508)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat java.lang.Thread.run(Thread.java:750)\n", + "Caused by: java.io.IOException: Failed to connect to hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal:7337\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:287)\n", + "\tat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:218)\n", + "\tat org.apache.spark.network.shuffle.ExternalBlockStoreClient.lambda$fetchBlocks$0(ExternalBlockStoreClient.java:105)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:153)\n", + "\tat org.apache.spark.network.shuffle.RetryingBlockFetcher.lambda$initiateRetry$0(RetryingBlockFetcher.java:181)\n", + "\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n", + "\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n", + "\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n", + "\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n", + "\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n", + "\t... 1 more\n", + "Caused by: java.net.UnknownHostException: hub-msca-bdp-dphub-students-kishorkumarreddy-sw-5p4v.c.msca-bdp-students.internal\n", + "\tat java.net.InetAddress$CachedAddresses.get(InetAddress.java:764)\n", + "\tat java.net.InetAddress.getAllByName0(InetAddress.java:1282)\n", + "\tat java.net.InetAddress.getAllByName(InetAddress.java:1140)\n", + "\tat java.net.InetAddress.getAllByName(InetAddress.java:1064)\n", + "\tat java.net.InetAddress.getByName(InetAddress.java:1014)\n", + "\tat io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:156)\n", + "\tat io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:153)\n", + "\tat java.security.AccessController.doPrivileged(Native Method)\n", + "\tat io.netty.util.internal.SocketUtils.addressByName(SocketUtils.java:153)\n", + "\tat io.netty.resolver.DefaultNameResolver.doResolve(DefaultNameResolver.java:41)\n", + "\tat io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:61)\n", + "\tat io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:53)\n", + "\tat io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:55)\n", + "\tat io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:31)\n", + "\tat io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:106)\n", + "\tat io.netty.bootstrap.Bootstrap.doResolveAndConnect0(Bootstrap.java:206)\n", + "\tat io.netty.bootstrap.Bootstrap.access$000(Bootstrap.java:46)\n", + "\tat io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:180)\n", + "\tat io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:166)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:577)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:551)\n", + "\tat io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:490)\n", + "\tat io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:615)\n", + "\tat io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:604)\n", + "\tat io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)\n", + "\tat io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:84)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.safeSetSuccess(AbstractChannel.java:984)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:504)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:417)\n", + "\tat io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:474)\n", + "\tat io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)\n", + "\tat io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)\n", + "\tat io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)\n", + "\tat io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n", + "\t... 2 more\n", + "\n", + ")\n", + "23/03/10 18:35:55 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:55 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:55 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:55 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:55 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:35:55 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "[Stage 56:> (0 + 1) / 1]\r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total records: 8807\n", + "Duplicate Tweets based on { 0.3 } jaccard distance: 577\n", + "Unique Tweets based on { 0.3 } jaccard distance: 0.3 : 8230\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "records = df_hashed_text.count()\n", + "dups_30 = df_dups_text_30.select('id_A').distinct().count()\n", + "uniques = records - dups_30\n", + "\n", + "print ('Total records: ', records)\n", + "print ('Duplicate Tweets based on {', jaccard_distance, '} jaccard distance: ', dups_30)\n", + "print ('Unique Tweets based on {', jaccard_distance, '} jaccard distance: ', jaccard_distance, ': ', uniques)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "e7c676c0-3018-4c5c-8a92-280230b741c0", + "metadata": {}, + "outputs": [], + "source": [ + "df_dups_text_30.createOrReplaceTempView(\"tw_df\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b0d97fe3-ffb0-499d-905d-066632a502cf", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "23/03/10 18:36:21 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:36:21 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:36:21 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:36:21 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + " ]\r" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
orgcount(1)
0news11
1Others1584
2edu128
3ngo1
4gov26
5influencer13
\n", + "
" + ], + "text/plain": [ + " org count(1)\n", + "0 news 11\n", + "1 Others 1584\n", + "2 edu 128\n", + "3 ngo 1\n", + "4 gov 26\n", + "5 influencer 13" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dup_df = spark.sql('select org,count(*) from tw_df group by org').toPandas()\n", + "dup_df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4032e74d-d45c-4b0b-91f1-b6ad129a1495", + "metadata": {}, + "outputs": [], + "source": [ + "df_hashed_text.createOrReplaceTempView(\"tw_df\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d69f3b5d-0252-4255-b0ca-f7e32bde3647", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "23/03/10 18:37:56 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:37:56 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:38:57 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:38:57 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:38:59 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:38:59 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:39:02 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:39:02 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:39:02 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:39:02 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:39:02 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + " \r" + ] + } + ], + "source": [ + "all_df = spark.sql('select org,count(*) from tw_df group by org').toPandas()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e7d65a85-a628-4c2e-9dc7-5dc5255ea3db", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
orgcount(1)
0news530
1gov103
2edu1395
3influencer16
4Others6702
\n", + "
" + ], + "text/plain": [ + " org count(1)\n", + "0 news 530\n", + "1 gov 103\n", + "2 edu 1395\n", + "3 influencer 16\n", + "4 Others 6702" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "all_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b05e7a64-2ef4-439a-81b3-accf7fc4edd2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
orgcount(1)
0news11
1Others1584
2edu128
3ngo1
4gov26
\n", + "
" + ], + "text/plain": [ + " org count(1)\n", + "0 news 11\n", + "1 Others 1584\n", + "2 edu 128\n", + "3 ngo 1\n", + "4 gov 26" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dup_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e02748d3-ad05-466e-b699-5a34634e15a2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
orgcount(1)
0news530
1gov103
2edu1395
4Others6702
5ngo61
\n", + "
" + ], + "text/plain": [ + " org count(1)\n", + "0 news 530\n", + "1 gov 103\n", + "2 edu 1395\n", + "4 Others 6702\n", + "5 ngo 61" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dup_df.sort_values(by='org',inplace=True)\n", + "all_df.drop(3,inplace=True)\n", + "all_df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f0faa1a1-abe0-4bae-b874-3a9895280e56", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
orgcount(1)
1Others1584
2edu128
4gov26
5influencer13
0news11
3ngo1
\n", + "
" + ], + "text/plain": [ + " org count(1)\n", + "1 Others 1584\n", + "2 edu 128\n", + "4 gov 26\n", + "5 influencer 13\n", + "0 news 11\n", + "3 ngo 1" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dup_df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "05f05516-1d1a-480a-99d4-13e952821f89", + "metadata": {}, + "outputs": [], + "source": [ + "all_df.sort_values(by='org',inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "adae011b-f0f7-4e13-a3e2-c895d372c0c4", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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3OdZ06ZNw8SJE1/5GImIqjpJkuDo6Ah7e/sK/3gGqnoMDQ2hr6//ytvRaSDKy8tDq1atEBoaCgBo3rw5zp49i0WLFqFnz55yv+c9lbcoz/YprP/ztjNmzBgMGzZMfp+eng5nZ+cXHxQRkULp6+uXyhcTkS7odFC1o6Mj3N3dtdoaNmyI69evA/i/07DPnsVJTk6Wzxqp1WpkZ2cjNTX1uX1u375dYP8pKSkFzj7lMzY2hpWVldaLiIiIqiadBqI2bdrgwoULWm0XL15ErVq1AACurq5Qq9WIiIiQl2dnZyM6Ohre3t4AgJYtW8LQ0FCrT2JiImJjY+U+Xl5e0Gg0OHLkiNzn8OHD0Gg0ch8iIiJSLp1eMvvmm2/g7e2N0NBQBAYG4siRI1i6dCmWLl0K4MllrpCQEISGhsLNzQ1ubm4IDQ2FmZkZunfvDgBQqVTo06cPhg8fDltbW9jY2GDEiBHw8PBA+/btATw569SpUycEBwdjyZIlAIC+ffvC39+/WHeYERERURUndGzr1q2icePGwtjYWDRo0EAsXbpUa3leXp4YP368UKvVwtjYWLz99tvizJkzWn0yMzPFoEGDhI2NjTA1NRX+/v7i+vXrWn3u3r0revToISwtLYWlpaXo0aOHSE1NLXadGo1GABAajealj7UoT26EL78XERGRUhT3+1un8xBVJpyHiIiIqPIp7ve3zh/dQURERKRrDERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHg6DUQTJkyAJElaL7VaLS8XQmDChAlwcnKCqakpfH19cfbsWa1tZGVlYfDgwahevTrMzc3RpUsX3Lx5U6tPamoqgoKCoFKpoFKpEBQUhLS0tPI4RCIiIqoEdH6GqFGjRkhMTJRfZ86ckZfNnDkTc+bMwYIFC3D06FGo1Wp06NABGRkZcp+QkBBs2rQJ69evx/79+3H//n34+/sjNzdX7tO9e3fExMQgPDwc4eHhiImJQVBQULkeJxEREVVgQofGjx8vmjZtWuiyvLw8oVarxfTp0+W2R48eCZVKJRYvXiyEECItLU0YGhqK9evXy31u3bol9PT0RHh4uBBCiHPnzgkA4tChQ3KfgwcPCgAiLi6u2LVqNBoBQGg0mpIcYrEA5fsiIiJSiuJ+f+v8DFF8fDycnJzg6uqKbt264cqVKwCAhIQEJCUlwc/PT+5rbGwMHx8fHDhwAABw/Phx5OTkaPVxcnJC48aN5T4HDx6ESqWCp6en3Kd169ZQqVRyn8JkZWUhPT1d60VERERVk04DkaenJ1atWoUdO3bgp59+QlJSEry9vXH37l0kJSUBABwcHLTWcXBwkJclJSXByMgI1tbWz+1jb29fYN/29vZyn8JMmzZNHnOkUqng7Oz8SsdKREREFZdOA9G7776Ljz76CB4eHmjfvj3+/vtvAMDKlSvlPpIkaa0jhCjQ9qxn+xTW/0XbGTNmDDQajfy6ceNGsY6JiIiIKh+dXzJ7mrm5OTw8PBAfHy/fbfbsWZzk5GT5rJFarUZ2djZSU1Of2+f27dsF9pWSklLg7NPTjI2NYWVlpfUiIiKiqqlCBaKsrCycP38ejo6OcHV1hVqtRkREhLw8Ozsb0dHR8Pb2BgC0bNkShoaGWn0SExMRGxsr9/Hy8oJGo8GRI0fkPocPH4ZGo5H7EBERkbIZ6HLnI0aMwPvvv4/XXnsNycnJmDJlCtLT09GrVy9IkoSQkBCEhobCzc0Nbm5uCA0NhZmZGbp37w4AUKlU6NOnD4YPHw5bW1vY2NhgxIgR8iU4AGjYsCE6deqE4OBgLFmyBADQt29f+Pv7o379+jo7diIiIqo4dBqIbt68ic8++wx37tyBnZ0dWrdujUOHDqFWrVoAgFGjRiEzMxMDBgxAamoqPD09sXPnTlhaWsrbmDt3LgwMDBAYGIjMzEy0a9cOYWFh0NfXl/usWbMGQ4YMke9G69KlCxYsWFC+B0tEREQVliSEELouojJIT0+HSqWCRqMp9fFELxgjXur4EyciIqUo7vd3hRpDRERERKQLDERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeK8ciHJzcxETE4PU1NTSqIeIiIio3JU4EIWEhGD58uUAnoQhHx8ftGjRAs7OzoiKiirt+oiIiIjKXIkD0e+//46mTZsCALZu3YqEhATExcUhJCQE3333XakXSERERFTWShyI7ty5A7VaDQDYtm0bPvnkE9SrVw99+vTBmTNnSr1AIiIiorJW4kDk4OCAc+fOITc3F+Hh4Wjfvj0A4OHDh9DX1y/1AomIiIjKmkFJV/jiiy8QGBgIR0dHSJKEDh06AAAOHz6MBg0alHqBRERERGWtxIFowoQJaNy4MW7cuIFPPvkExsbGAAB9fX2MHj261AskIiIiKmslDkSrVq3Cp59+KgehfJ999hnWr19faoURERERlRdJCCFKsoK+vj4SExNhb2+v1X737l3Y29sjNze3VAusKNLT06FSqaDRaGBlZVWq25akUt3cC5XsJ05ERFR5Fff7u8SDqoUQkAr5Br958yZUKlVJN0dERESkc8W+ZNa8eXNIkgRJktCuXTsYGPzfqrm5uUhISECnTp3KpEgiIiKislTsQPTBBx8AAGJiYtCxY0dYWFjIy4yMjODi4oKPPvqo1AskIiIiKmvFDkTjx48HALi4uODTTz+FiYlJmRVFREREVJ5KPIaoV69eePToEZYtW4YxY8bg3r17AIATJ07g1q1bpV4gERERUVkr8W33p0+fRvv27aFSqXD16lUEBwfDxsYGmzZtwrVr17Bq1aqyqJOIiIiozJT4DNE333yD3r17Iz4+Xuuy2bvvvou9e/eWanFERERE5aHEZ4iOHTuGpUuXFmivUaMGkpKSSqUoIiIiovJU4jNEJiYmSE9PL9B+4cIF2NnZlUpRREREROWpxIEoICAAkyZNQk5ODgBAkiRcv34do0eP5m33REREVCmVOBDNmjULKSkpsLe3R2ZmJnx8fFC3bl1YWlpi6tSpZVEjERERUZkq8RgiKysr7N+/H3v27MGJEyeQl5eHFi1aoH379mVRHxEREVGZK3EgyvfOO+/A29sbxsbGhT7bjIiIiKiyKPEls7y8PEyePBk1atSAhYUFEhIS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RUWhWrVqEEJAo9Ggbdu2WL9+Pezs7MqiTiIiIqIyU+K7zAYPHoz09HScPXsW9+7dQ2pqKmJjY5Geno4hQ4aURY1EREREZarEEzOqVCrs2rULr7/+ulb7kSNH4Ofnh7S0tNKsr8LgxIxERESVT5lNzJiXlwdDQ8MC7YaGhsjLyyvp5oiIiIh0rsSB6J133sHQoUPx77//ym23bt3CN998g3bt2pVqcURERETlocSBaMGCBcjIyICLiwvq1KmDunXrwtXVFRkZGZg/f35Z1EhERERUpkp8l5mzszNOnDiBiIgIxMXFQQgBd3d3tG/fvizqIyIiIipzpfa0+6qOg6qJiIgqn1IfVL1nzx64u7sjPT29wDKNRoNGjRph3759L1ctERERkQ4VOxDNmzcPwcHBhaYrlUqFfv36Yc6cOaVaHBEREVF5KHYgOnXqFDp16lTkcj8/Pxw/frxUiiIiIiIqT8UORLdv3y50/qF8BgYGSElJKZWiiIiIiMpTsQNRjRo1cObMmSKXnz59Go6OjqVSFBEREVF5KnYg6ty5M8aNG4dHjx4VWJaZmYnx48fD39+/VIsjIiIiKg/Fvu3+9u3baNGiBfT19TFo0CDUr18fkiTh/Pnz+PHHH5Gbm4sTJ07AwcGhrGvWCd52T0REVPkU9/u72BMzOjg44MCBA/j6668xZswY5OcoSZLQsWNHLFy4sMqGISIiIqraSjRTda1atbBt2zakpqbi0qVLEELAzc0N1tbWZVUfERERUZkr8aM7AMDa2hqvv/56addCREREpBMlfrgrERERUVXDQERERESKx0BEREREisdARERERIrHQERERESKx0BEREREisdARERERIrHQERERESKx0BEREREisdARERERIrHQERERESKx0BEREREisdARERERIrHQERERESKx0BEREREisdARERERIrHQERERESKp9NANG3aNLz++uuwtLSEvb09PvjgA1y4cEGrjxACEyZMgJOTE0xNTeHr64uzZ89q9cnKysLgwYNRvXp1mJubo0uXLrh586ZWn9TUVAQFBUGlUkGlUiEoKAhpaWllfYhERERUCeg0EEVHR2PgwIE4dOgQIiIi8PjxY/j5+eHBgwdyn5kzZ2LOnDlYsGABjh49CrVajQ4dOiAjI0PuExISgk2bNmH9+vXYv38/7t+/D39/f+Tm5sp9unfvjpiYGISHhyM8PBwxMTEICgoq1+MlIiKiCkpUIMnJyQKAiI6OFkIIkZeXJ9RqtZg+fbrc59GjR0KlUonFixcLIYRIS0sThoaGYv369XKfW7duCT09PREeHi6EEOLcuXMCgDh06JDc5+DBgwKAiIuLK1ZtGo1GABAajeaVj/NZQPm+iIiIlKK4398VagyRRqMBANjY2AAAEhISkJSUBD8/P7mPsbExfHx8cODAAQDA8ePHkZOTo9XHyckJjRs3lvscPHgQKpUKnp6ecp/WrVtDpVLJfZ6VlZWF9PR0rRcRERFVTRUmEAkhMGzYMLz55pto3LgxACApKQkA4ODgoNXXwcFBXpaUlAQjIyNYW1s/t4+9vX2Bfdrb28t9njVt2jR5vJFKpYKzs/OrHSARERFVWBUmEA0aNAinT5/GunXrCiyTJEnrvRCiQNuznu1TWP/nbWfMmDHQaDTy68aNG8U5DCIiIqqEKkQgGjx4MLZs2YLIyEjUrFlTbler1QBQ4CxOcnKyfNZIrVYjOzsbqampz+1z+/btAvtNSUkpcPYpn7GxMaysrLReREREVDXpNBAJITBo0CBs3LgRe/bsgaurq9ZyV1dXqNVqREREyG3Z2dmIjo6Gt7c3AKBly5YwNDTU6pOYmIjY2Fi5j5eXFzQaDY4cOSL3OXz4MDQajdyHiIiIlMtAlzsfOHAg1q5di82bN8PS0lI+E6RSqWBqagpJkhASEoLQ0FC4ubnBzc0NoaGhMDMzQ/fu3eW+ffr0wfDhw2FrawsbGxuMGDECHh4eaN++PQCgYcOG6NSpE4KDg7FkyRIAQN++feHv74/69evr5uCJiIiowtBpIFq0aBEAwNfXV6t9xYoV6N27NwBg1KhRyMzMxIABA5CamgpPT0/s3LkTlpaWcv+5c+fCwMAAgYGByMzMRLt27RAWFgZ9fX25z5o1azBkyBD5brQuXbpgwYIFZXuAREREVClIQgih6yIqg/T0dKhUKmg0mlIfT/SC8eGljj9xIiJSiuJ+f1eIQdVEREREusRARERERIrHQERERESKx0BEREREisdARERERIrHQERERESKx0BEREREisdARERERIrHQERERESKx0BEREREisdARERERIrHQERERESKx0BEREREisdARERERIrHQERERESKZ6DrAkgH1krlu7/uonz3R0REVEI8Q0RERESK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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "index = np.arange(len(dup_df['org']))\n", + "index2 = np.arange(len(all_df['org']))\n", + "\n", + "bar_width = 0.35\n", + "opacity = 0.8\n", + "\n", + "ax.bar(index, dup_df['count(1)'], color='orange', align='edge', width=bar_width, label = 'Duplicate Count')\n", + "ax.bar(index2, all_df['count(1)'], color='blue', align='edge', width=-bar_width,label = 'Unique Count')\n", + "\n", + "# Assign the tick labels\n", + "ax.set_xticks(index)\n", + "ax.set_xticklabels(dup_df['org'], rotation=90)\n", + "plt.title('Tweet Similarity at Jaccard 0.3')\n", + "plt.xlabel('Organization')\n", + "plt.ylabel('Count of Tweets')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1fada771-f0d4-439a-8a82-72b5d55123e5", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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du3a1axfv74pyUxISAjart944w2rb+D+kyZNMiWZsbGx5iWXXGLWq1fPWvelPYflfY4OHDhgNmvWzJRkejwes1WrVmaHDh3M+vXrm4ZhmD6fr8zPS2A7bdy4sXnvvfeaksxGjRqZHTt2NCMiIkxJZr169cxNmzYF3a9Lly6mpBL/Xr/++mtTkhkXF2cWFBScdBw//fST9TyuWbPmpP3nz59v9d+zZ4/V/tlnn5mSzCuvvNK8/vrrTUlms2bNzI4dO5qtW7e2+j3++OPW/ePj481OnTqZUVFRZkREhPnkk0+akszExMSQ5TqdTtMwDLN+/fpmu3btzDZt2piRkZGmJDMmJsZcv359yH0C637cuHFmXFycGRERYXbo0MF6TZZkPvHEEyH3C/d3FdguS/oJvIYV387eeusta1tp3Lixeckll5jnn3++1ff66683CwsLrf4LFy40u3btanq9XlOS2alTp6BlfPPNN6ZpBm87J9qyZYvZsGFDa7kdOnQwzz//fKveO++80/T7/UH3CbyH9e3b17zyyitNwzDM1q1bmy1atLDG2r1795BlnUx511nXrl2tsTds2DCo9ieffLJMyyztdaoi25BpmuZTTz1lvXdGR0ebHTt2NJs1a2a63e6wr/cff/yx9R7vdrvNiy66yGzTpo1Zs2bNsK/XgdeUmJgYs02bNubFF19svdfUqFEj7HtNYBsdNmyY2ahRI9PpdJoXXXSRedFFF5mDBg0yTbPi7zulueuuu0xJ5p/+9Kewt+/atcta3s6dO8v8uKW54447TEnm448/fkoezw5CRRVV1lBhmqZ58803m5LMoUOHBrXbDRUul8t88MEHzby8PNM0iz70jh492nrhKP6GaZrlDxXZ2dlmo0aNTEnmtddea+7atSvo9i+++MJ8++23g9reffdd89tvvw1q8/v95nvvvWeec845ZnR0tJmTkxN0e+DNPNwbccCiRYtMwzDMunXrhnwYmTFjhulyucyoqKiQmkvyzjvvmJLMLl26hL195syZpiSzW7duVtu///1vU5J58cUXhzwXGRkZ5vPPP28ePny4TMsvzakMFW6325w4caL14SwvL8/s16+fKcns3LlzyOOVFCpeeOEFU5JZu3Zt88svvwwaa5s2baw3p1MVKtauXWt6vV4zIiLCfO2114I+uLz//vtmdHS06XQ6zbS0tFKfn3BjqWiocLvd5ogRI8yjR4+aplm0XT/yyCPWh8sTPwCfrHbTPL7+PB6P+dprr1kflvLz8838/PxSH6ciz9EzzzxjSjJ79Ohh/vLLL0GPt2PHDvO5554r8/MS2E5dLpfpdrvNd955x7rt559/Nrt162ZKMi+99NKgD4Gvv/66Kcns06dP2Me97777TEnmqFGjyjSOd9991/oi48QPm+H88ssv1vNe/LUk8DrkdDrN+vXrm6mpqdZtgXW+YsUK0+FwmIZhmNOmTbOWd/jwYXPAgAHW30G417Lp06ebP/30U1DbkSNHrCCSlJQUcp/Aune73eYtt9wS9KXFK6+8YkoyIyIiQr7MKC2shzNhwgQrFGZkZFjta9euNT/44APz2LFjQf23bt1qXnnllaYkc+bMmSGPV9J7V0BJocLv95udOnWynsP09HTrtkWLFlkfoF955ZWg+wXew9xut9mqVStz8+bN1m3Lli2zPiAvWrSoTM9HQEXWWXmf+xOV9jpVkfG899571nb97LPPWp8XTLNou33ttdfMDRs2WG07duywAsGdd94Z9DpRWFhofvDBB+b7778ftIxZs2aZW7duDWrLz8+33pvPP//8oNcn0zz+PDmdTrNLly5B76mBv7eKvu+UpmvXrqYkc8KECWFv9/v91hc1n3zySZkf90THjh0zN23aZD744IOmJLN58+bmgQMHKvx4pwqhoooqT6gYOXKkKcn8wx/+ENRuN1RcfPHFYe/XoUMHU5L5f//3f0Ht5Q0VkydPNiWZLVu2DHlTqYi//e1vpqSQ2YqyhIpATf/73//C3v7QQw+V65uAw4cPm+ecc06Jb3w9e/Y0JQV9qzxx4kRTkvnCCy+UaRkVdSpDRe/evUPuk5mZaX2TuH///qDbwoUKv99vhcuXX3455PFWr15tjeNUhYqbbrqp1Of6pZdeMiVZ32iVRWAsJ/uZP39+0P0Cz8nFF18c8saYl5dnzQwEvoUta+2meXz93XfffScd94mPU5HnaOjQoaX+HZVH8e30/vvvD7l937591ozFp59+arXn5OSYkZGRptvtDvoAa5pFz2dgZnPdunVlGsfzzz9vSjLbt29f5rHXqlUr5LkLvA6dGDaKu/3220v8ljMvL89s3rz5SV/LwrniiitMSebu3buD2gPrPi4uzjx06FDI/QKvi//973+D2svzwfaDDz4wHQ6HWbNmzZBtuDQ//PCDKYWfAahoqFiyZIkpyfR6vdYMcXGB96TGjRsHBcjAe5hhGOaqVatC7hf4YBduO62oktbZ6QwVFRlPq1atyvXeOGzYMFOSec0115QppJ9M//79TUnmV199FdQeeJ68Xm9IUDJNe+87pQk8H9OmTSuxT2CW+d///neZHzfghhtuCHo/cbvd5l/+8hfz559/LvdjnQ4cU3EWiIyMlFR0BpJTadiwYaW22z0Q8X//+5+korOqeL3eMt9v586dmjRpkm677TZdffXVuuKKK3TFFVfoX//6l6Si88iXx44dO/TNN9+ofv366tOnT9g+gfaUlJQyPWbNmjV1ww03SJLmzp0bdFtmZqY++eQTeb1e3XzzzVZ74EwQH374YdXYN7IM/vSnP4W01a1b19qXedu2bSd9jI0bN2rnzp2KiIgIu19whw4ddNlll9kdqiUvL08LFy6U0+kscT/k8q7v4urXr6+uXbuW+FPS6Z8HDRokhyP4Jdntduviiy+WVLbnsiR33nlnufpX9DkKbMPz588P2R/ejuHDh4e01a9fX7fccouk4NeiqKgo3XLLLcrPz9ecOXOC7vPhhx/q559/VqdOndS6desyLTvwuhp4nS2L0l6TfT6f9dpwoo8//lhS0XEyJ3K73erfv3+py/366681ZswY9enTR4mJidZr4/fffy9J+vbbb8Pe74477ghb3yWXXCKp4tve5s2b1a9fP/n9fr3xxhtq3759SJ/c3FzNmTNHQ4YMUc+ePfW73/1OV1xxhQYOHCip/K/npVm8eLEk6dZbb1VcXFzI7X/+85/l9Xq1Y8cObd68OeT2du3aqVOnTiHtdp6niq6z06U84/nhhx+0YcMGeTyeMp8sJvC+//DDD5frtMubNm3SY489pptuuklJSUnWuAKvPyVtJ926dVN8fHxI++l63zl27JgkyePxlNgn8Hnn6NGj5X78Vq1aqWvXrmrfvr18Pp/y8/M1f/58a9uubJxS9ixw6NAhSVJ0dPQpfdyWLVuW2h54kamojRs3SlK5/nBnzZqlP//5z9Yfbjj79+8v1zi+++47SUUvBldccUXYPoHl/fTTT2V+3L59+2r27Nl65513NGbMGKv93XffVUFBgXr16hV0GuAbb7xRTZo00eLFixUfH69rr71Wv/vd75SUlFTmD0BnWrNmzcK2169fX5s3b7a2zdIEtqPGjRuXeP2Kli1bVuiiQSUt79ixY/J4PPr9738fto/568Ga5VnfARU9pWxpz6WkMj2XJSnpb7kkFX2O7r77bj399NOaOXOmFi1aZG3DV111lc4///wKjd3tdqt58+ZhbyvptWjQoEGaNWuWZs2apQceeMBqDxzcXp6DWqOioiSpXAfiBvoG7ltcQkKCnE5nSHtWVpZ+/vlnSQo5y0tASe2maWrEiBEnPRC+pNfG07HtZWdn64YbblB2drbGjh0b9rz8O3fuVI8ePcJ+gD/ZmCsisJ20atUq7O1RUVFq2LChfvjhB33//ffWAbABp/J5srvOTrWKjCfwHt6qVauw2/qJDh48aL1elOd9f+LEifrb3/4mv99fpnEVV9Jr3+l634mIiJCkUk8UkZubK0lBZ5ArqwkTJlj/N01Tc+fO1YgRI9S3b18ZhlGu61+cDsxUnAUCZ2UIvLCdKiU9XmxsrCT7MyM5OTmSFPbiReFs3bpVQ4YM0bFjx/TQQw9pzZo1ysnJkd/vl2maev311yWp3GdICpyZIicnR1999VXYn9WrV0sq3zcLPXr0UN26dfXtt98GXf38nXfekVQUOoqLjIzUl19+qbvvvlt+v1//+te/NGLECLVp00atW7fWBx98UK66SlL8A01hYWGJ/Yp/0xzuQ1BgzOEEvnEPfPAsTeCNuF69eiX2CWxzp0Jgfefl5ZW4vgNnEistvJ5qp+K5LO9jl6Siz1F8fLyWLVumm2++WdnZ2Zo1a5b+9Kc/qVmzZurSpYuWLVtW7rHHxMSEzOAElPRadOWVVyohIUFr1qyxvjT4+eef9eGHH8rj8eiOO+4o8/IDF1Dbvn17mdbB/v37rSs9h7v4WknrIhBEDMPQOeecE7ZPSR/c3nrrLb3yyiuKjIzUK6+8oi1btujIkSMyi3ZxVr9+/SSV/Np4qrc9v9+vvn37avPmzbr++utDzoQVcNddd2nz5s3q3LmzkpOTlZ6erry8PJmmaY31VM54BV5rSnuvLO397VQ+T3bX2alWkfGU9z080F9Sma+r9cUXX+ivf/2rDMPQxIkTtX79eh06dMh633/00UdDxlVcSevsdL3v1K5dW1LRlwThmKZpvT4E+laUYRi644479Nprr0mS/va3v9l6vFOBUFHN+f1+64360ksvDdunpBe6k33zlpmZGbY9IyNDUslvcGUVuH/gD+xk5s2bp/z8fN1+++165pln1K5dO0VFRVlTqCeeUresAm/gXbt2tV5AS/o58fS7pXG5XNbuGYEgsWvXLn311VeKiopSr169Qu5z3nnn6R//+If279+v5cuXa9KkSerUqZM2bNigG2+8UStWrKhQjcUVfzEv7bkvftvpvLBi4PkvaXuTjm9zJwqs+/Js44HlnXvuuSdd33Y+yFdndp6jli1b6t///rcOHDigzz77TOPGjdOFF16o5cuXq0ePHuX6G5KKTv9Z0jeUpb0WBWYjArMT77zzjvLz89WnTx/VqVOnzMsPnBbywIEDZdoV54svvgi5b1kEPvyYplnia3NJX+TMnj1bkvTss8/q3nvvtU7PGlDR18aKGjt2rBYuXKgLL7xQc+bMCRsK9+zZo88++0w1a9bUwoUL1bNnT8XGxsrtdp+2MQe265JeTyRZpxK1+/52MlVtnVVkPOV9Dy/+nIY7zWxp43r44Yc1ZswY6xS0p+p9vyLvO6VJSEiQVPKucD/99JM1ixHoa9f1118vqeiL17I+r6cLoaKae++995Seni63222dHz0g8CYV7o8mOzvbmmovSWBqs6T2Cy64oCJDtgR26Snr9GLgw8jll18e9vaS3vBPtt9mYCp848aNpU6vVkRgNiIQKt555x2Zpqkbb7yx1KlPl8ulzp0765FHHtGqVat0++23q7CwUP/4xz9sjyk6Otran3jdunUl9gt8w+t0Okuc9j8VAtvRzp07SzyWpKRtsbRtXCra5/dECQkJcrvd2rt37xnbteB0KM/+yOV1Kp4jr9erpKQkPfbYY1q3bp26du2qQ4cOWX8LZZWfn6+tW7eGva2016K77rpLTqdTs2fPVkFBgbVLWnnP53/uuedarznTpk07af9XX31VknTFFVeE3Ze7JLVr11bdunUllbwffeBv8kSlvTbm5+eX+PdzOsydO1eTJ09WrVq19P7775e4W27gWhMXXnhh2JBXWoCr6LYf2E6KzxwXd/DgQetDqt33t5Op6Do7XX/3FRlP4D18w4YNZdpzITo6Wuedd56k0/++fzJ23ndK07lzZ0nSV199Ffb2QHt8fHyZr6h9MsVn80rb++BMIFRUYzt27NCIESMkFR2IeeJUe2Af5lWrVoXcN3Dl19KUtG9loP3EEFNeN954oyTppZdeKnX/w4DAh/BwF6XZtGmTFixYUOr9Stp1KSEhQW3atNH+/fv1z3/+syxDL7MrrrhCjRo10tatW7Vy5UrrA1V5dr+Qju9/umfPnlMyrsC6e/vtt0vsE3guunbtWu7dZ8rjwgsvVMOGDXX06NGwz39aWlqJu82Uto3v3r077MkEatasqZ49e8rv9wddeLC6Odl2bcepfo6cTqd1MGtFtuFwr0WZmZl69913JYV/LYqPj1ePHj2Unp6uZ599Vt98843i4uJ07bXXlnv5gV0sZsyYoSVLlpTYb9asWdY2F7hPeQQurBfumJyCggLrW9sTlfba+Oabb5b6beyp9M0331gnHHjnnXdK/SY2MOaMjIywM4KTJ08+6X3Lu+337NlTUtFxbenp6SG3T58+Xbm5uWrcuLFatGhRrscur4qus9P1d1+R8TRr1kxt2rRRXl5emV8nAu/7zz77rO1xLV68uMKhws77Tmn69Okjl8uljRs3hr1/4GrbxU/SYlfgStoNGzYs1yzs6UCoqIZ+/vlnvfjii+rUqZP27t2rVq1aacqUKSH9rrvuOklF+9kV/4NMTk7W448/Lper9OP0161bp9GjRwft2/rXv/5Vq1evVlRUlP785z/bquOee+5R48aNtX79et10000hB8UuXbo06E00cBD1K6+8orS0NKv9+++/16233lri2RaaNm0qqejblJJeqJ966ikZhqHhw4drxowZIfvxbtu2TU8++aT++9//lqvG4gdOjRs3Tmlpaapbt27Yq/I+99xzev7550NePHfu3GmFwA4dOgTddvvtt6tJkyZ6/vnnyzWuUaNGye126+OPP9bo0aODvqnJz8/XM888Y+02Mnbs2HI9dnk5HA49+OCDkoo+iBW/MvqOHTs0cOBAa5eIEwW28ffee08LFy602vfu3at+/fqVuD/2//t//09er1dPPPGEJk2aFPIGvXfvXr3wwgvWt85VUSBQffHFF6dlN62KPEePPvqo3njjjZDdIdatW2ddGfzEbfhkXC6XXnnlFStASEXHLfTv31/Hjh1Tp06ddNVVV4W976BBgyQd39e4f//+JR4fVJrf//73GjZsmPx+v2688Ua9/PLLQceSHDx4UE8++aR1NrThw4dXKLyMHDlShmFoxowZ1jFiUtEHyCFDhmj79u1h7xd4bfzb3/4W9BqXnJyshx9+2Dp49HTKyMjQjTfeqKNHj+qpp546af2tW7dW7dq1tXv3bj355JPWNnzs2DE98MADWrNmTYn3DWz75T0729VXX61LLrlEubm5uuOOO4J2b1m8eLF1teoxY8ac1plAqeLrLFB7amrqKT3epKLjCRwvM27cOL344otBxzYcOXJEM2bMCPrG/+GHH5bP59OSJUs0ePDgoGMP/H6/Fi5cGHT8YGBckyZNCtr+V61apUGDBlV427bzvlOa+Ph46+xtgwYNsmbkTNPU008/rSVLligiIkKjRo0Kue8VV1yhJk2ahFxte9asWXr99ddDjtPIzc3Va6+9Zp2R87777iv3eE+5U3h6WpxCgfNwF79abqdOncwmTZoEnaP41ltvDbnIVEBGRoZ1jnuv12u2a9fOuv+YMWPKfEXtmJgY85JLLrHO7+5wOIIuRBVQ0StqB8bocDjM1q1bm+3atbMujlP8PsWvOO10Os2WLVuabdq0MQ3DMBs0aGA+8cQTJS7n6quvNqWiqwJ37tzZTExMNP/4xz8G9Zk6darpdDqtfh07djQ7depkxsbGWs93aeeeLklaWlrQOrv33nvD9nvggQesPk2aNDEvvfRS88ILL7TG1KZNm5CL2wSucVCRc5bPmjXLurhPjRo1zPbt25sdO3Y0o6KirHOyl3SV1pOdJ76ki9yVdkXt3//+91b9F154odmuXTvT5XKd9MqmgwcPtu7XtGlT634XXnih9ZyGu99///tf6wquERERZrt27cxLL73UumKtJPORRx4pwzNZJLD9169fv9QrC991111lek5OfNwT/65++OEH6yJKjRs3Nn/3u9+ZiYmJQf0CdZRl3OGud1He5yhwDnWHw2E2b97cvPTSS61rK0gyr7rqKuuieycT7orajRs3Njt16mTWqFHDlIqusFv8wlonys3NtV63VI5rU4Tj9/vNhx56yLqCcmRkpNmuXTvzoosusq6XYRiG+Ze//CXs+ffLcr0c0zTN8ePHW+M999xzzUsuucSMjo42vV6vdRGyq6++Oug+O3bsMOvUqWP9LRd/rb/qqqusC1KeuI4rep2XcO2B13mn01nq9r9w4ULrPlOnTrVqjYuLMzt16mRGR0ebhmFYFzEMt/3+85//tG5r06aNmZiYaCYmJlpXPD/ZFbXPO+88632xQ4cOQdvogAEDSryidknXdijrui2uoussOzvbrF27tinJbNCggdm1a1czMTHRnDhxYpmWW9J1Kio6HtM0rc8Kkkyfz2d26tTJTEhIKPGK2kuWLLHeZ9xut3nxxRebbdu2tS4+WHy7ys7Otq547vF4zLZt25otWrQwJZmtWrWyrhFSlm30RHbed0qTk5Njtm/f3hpz+/btzXPPPdf6+zjxor4BJV2fLFCLYRjm+eefb1566aVmixYtrNdBSebgwYNDrnNUGZipqOK2bNlinW1l06ZNKigoULdu3fToo49qw4YNmjdvXonTXfXq1dNXX32lW2+9VTVr1tTmzZtVu3Ztvfnmm5o4ceJJl3377bdr0aJFat26tTZt2qRjx47p6quv1meffXbKTlt28cUXa926dRo7dqxatmyp7du3a+vWrYqPj9e9996rv/zlL1Zfl8uljz76SPfdd59iY2P1ww8/6MCBAxo8eLBWr14d9kwrAXPmzNFdd92l6OhorV69WikpKSH7dA4fPlxpaWn605/+pHr16mn9+vXasmWL6tatqzvuuEPvvvtuuc/3H6ix+CkMTzzrU8Cf//xnjRs3TldeeaXy8/OVlpamrKwsXXLJJXrppZe0cuXKU3rA9J133qm0tDQNGTJE5557rjZt2qR169apTp066tevn1JTU/XXv/71lC2vNE6nU++9954mTpyoCy64QNu2bdO+ffs0cOBArVy5ssRrO0hF+7A//vjjatasmX766SdlZmZq6NChWrZsWalnJfnDH/6gDRs26IEHHlCTJk20efNmbdiwQTVr1tQf/vAHzZo1K+hUwGWVkZFR4hmTvvrqq1K/gS2PZs2aacGCBUpMTFRWVpaWLl2qlJSUch8IXZryPkd/+9vfNGbMGF1yySU6dOiQ0tLSdPToUSUmJuqf//ynFi9efNIZ0nBefvllvfDCC4qKitK6desUGRmpfv36afXq1aWeLtfj8Vh/b+W5NkU4hmHomWee0erVqzV06FDFx8fr+++/1w8//KDzzjtPQ4YM0ddff60pU6bY+pb7//7v//Svf/1Ll156qfbv368ffvhBV1xxhZYuXWpds+TEg4gbNWqkZcuW6aabbpLH49GmTZsUERGh8ePHKzk5uULPeUUVFhaWuv0Xn4kdPny43n77bbVr186qtVOnTlq4cGHYa+AEDBgwQC+88IIuuugibd26VSkpKUpJSSnTAcPNmzfXmjVrNGrUKDVq1Ejr169XRkaG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AADOchU+pqIkfr9fP/30k2bOnKn//e9/uuaaa071IgAAAABUIRUOFQ6Ho9RTypqmqVq1aunpp5+u6CIAAAAAVAMVDhVXXnll2FDhcDhUu3ZtderUSXfffbdiY2NtDRAAAABA1VbhUPH555+fwmEAAAAAqK5O64HaAAAAAM5+p+RA7dTUVKWlpSk7O1vR0dFq166dunbteioeGgAAAEAVZytUrFixQgMHDtSWLVskFR2cHTjOIiEhQW+++aa6dOlif5QAAAAAqqwKh4qNGzeqW7duOnz4sHr27KmkpCTFxcVp3759+vzzz5WcnKyePXtq+fLlatWq1akcMwAAAIAqpMKhYvz48crLy9NHH32k7t27B902evRoffzxx7r++uv1+OOPa+7cubYHCgAAAKBqqvCB2p999pluueWWkEAR0K1bN91888367LPPKjw4AAAAAFVfhUNFdna2mjRpUmqfpk2bKjs7u6KLAAAAAFANVDhUxMfHa/ny5aX2WbFiheLj4yu6CAAAAADVQIVDxQ033KDPP/9cf//733Xs2LGg244dO6bHHntMn332mW644QbbgwQAAABQdRmmaZoVueP+/fvVuXNnbdu2TTExMbr00ksVGxurffv2adWqVcrMzNT555+vlStXqk6dOqd63FVCTk6OfD6fdX2OSvHBy5Wz3IroNbyyRwAAAIDToMJnf6pTp45WrFihhx9+WHPnztXChQut2yIiInT33XfrqaeeOmsDBQAAAIAiFZ6pKC4/P1+bNm1STk6OoqOjdeGFF8rtdp+K8VVpzFSUEzMVAAAAZ6Vyz1Q8+eSTOnz4sMaPH28FB7fbrbZt21p98vLy9OijjyoqKkpjxow5daMFAAAAUOWU60Dtjz/+WP/3f/+nmJiYUmciPB6PYmJi9Oijj+rTTz+1PUgAAAAAVVe5QsU///lP1a5dWyNGjDhp3+HDh6tOnTp68803Kzw4AAAAAFVfuUJFamqqunXrJq/Xe9K+Xq9X3bp1U2pqaoUHBwAAAKDqK1eo2LNnj84///wy92/atKn27t1b7kEBAAAAqD7KFSocDofy8/PL3D8/P18OR4WvrwcAAACgGijXJ/74+HitW7euzP3XrVunc889t9yDAgAAAFB9lCtU/O53v9Onn36qH3/88aR9f/zxR3366ae68sorKzo2AAAAANVAuULF8OHDlZ+f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8ZsPFQAAAADs+c0eUwEAAADg1CBUAAAAALCFUAEAAADAFkIFAAAAAFsIFQAAAABsIVTgjDp27Jg2bdqkwsLCyh4KAFSqY8eO6bXXXtPGjRsreygAYBunlMVp89JLL+nAgQP6+9//LklavXq1rr32Wu3fv19NmjTR559/roYNG1byKHGiq6++utTbDcPQJ598coZGg7Lo1KmTBg0apDvuuEO1a9eu7OGgHCIiIvTRRx8pMTGxsocCG3bt2qX169frkksuUUxMTGUPByfx/fff65dfflHdunWVkJBQ2cM5azBTgdNmxowZqlWrlvX7I488ojp16ui5556TaZp64oknKm9wKJHf75dpmkE/mZmZWrp0qb7//nvxPUTV43Q6NWLECMXHx+uOO+7Q4sWLWU/VxPnnn6/09PTKHgbK4W9/+5v+8pe/WL9//PHHuuCCC3T99dfrggsu0Pr16ytxdCjNu+++q8aNG6tly5a64oordOGFF6px48b697//XdlDOyswU4HTpnbt2po3b566d++ugwcPKiYmRnPnztVNN92kt956S//3f/+n7du3V/YwUUbff/+9brjhBr366qt8q1oFbd68Wf/4xz/09ttvKz09XfHx8brrrrs0cOBANW/evLKHhxJMnz5dr776qlJSUhQdHV3Zw0EZtGzZUg8++KCGDBkiSbrssstkmqYeffRRjRs3Ti1atNA777xTyaPEiRYuXKjevXurdevWGjBggOLj4/XTTz/p7bff1oYNG7RgwQJdd911lT3Mao1QgdOmZs2aWrhwoZKSkrR48WL9/ve/1/79+xUdHa0vv/xSPXr00NGjRyt7mCiHf/zjH5o+fbpWrFhR2UNBCfx+v5KTk/Xmm2/qgw8+UF5enq644gqlpKRU9tAQxv3336/58+fr8OHDuvrqq9WgQQMZhmHdbhiGXnjhhUocIU4UHR2t//3vf7rqqqv0yy+/qH79+lq4cKF69uypefPm6aGHHtKuXbsqe5g4QdeuXRUdHa0PP/xQDsfxHXVM09R1112ngwcP6quvvqrEEVZ/rsoeAM5ejRo10pdffqmkpCT973//U7t27axv4jIzM/lWrhpq0qSJ1q1bV9nDQCkcDod+//vf6/e//72++uor3XHHHVq6dGllDwslmDp1qvX///73vyG3EyqqHtM05ff7JUlfffWVnE6nrrzySklS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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "# Define custom colors\n", + "bar_colors = ['#1F77B4', '#FFA07A']\n", + "\n", + "# Create figure and axis objects\n", + "fig, ax = plt.subplots(figsize=(10, 8))\n", + "\n", + "# Define bar width and opacity\n", + "bar_width = 0.4\n", + "opacity = 0.8\n", + "\n", + "# Define index arrays for each set of bars\n", + "index = np.arange(len(dup_df['org']))\n", + "index2 = np.arange(len(all_df['org']))\n", + "\n", + "# Create the two sets of vertical bars\n", + "ax.bar(index, dup_df['count(1)'], color=bar_colors[0], align='edge', width=bar_width, alpha=opacity, label='Duplicates')\n", + "ax.bar(index2, all_df['count(1)'], color=bar_colors[1], align='edge', width=-bar_width, alpha=opacity, label='Unique')\n", + "\n", + "# Set the tick labels and axis limits\n", + "ax.set_xticks(index)\n", + "ax.set_xticklabels(dup_df['org'], fontsize=12, rotation=90)\n", + "ax.set_ylim(bottom=0)\n", + "ax.set_ylabel('Count', fontsize=14)\n", + "ax.set_xlabel('Organization', fontsize=14)\n", + "\n", + "# Add a title and adjust the subplot spacing\n", + "ax.set_title('Duplicate vs. Unique Entries by Organization at Jaccard 0.3', fontsize=16)\n", + "plt.subplots_adjust(left=0.2, right=0.9, top=0.9, bottom=0.1)\n", + "\n", + "# Add a legend with custom formatting\n", + "legend = ax.legend(loc='upper right', fontsize=12)\n", + "for i, text in enumerate(legend.get_texts()):\n", + " plt.setp(text, color=bar_colors[i], weight='bold')\n", + "\n", + "# Remove spines and set a grid\n", + "ax.spines['right'].set_visible(False)\n", + "ax.spines['top'].set_visible(False)\n", + "ax.yaxis.grid(color='gray', linestyle='dashed')\n", + "\n", + "# Show the plot\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d93d32bf-de1b-47c9-b001-df94ab647ed7", + "metadata": {}, + "outputs": [], + "source": [ + "all_df.sort_values(by='org',inplace=True)" + ] + }, + { + "cell_type": "markdown", + "id": "43da3506-7950-4d48-851d-59cf7c3592d2", + "metadata": {}, + "source": [ + "# Tweet Uniqueness Graph Based on Jaccard Similarity (0.5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8e5f73ee-4e34-4fc7-be88-d5eb0127ddfb", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "826593d1-ebe0-4861-b912-b6a62262961d", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "23/03/10 18:39:06 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:39:06 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:39:06 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:39:06 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:08 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:08 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:08 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:08 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:08 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:08 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:08 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:08 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:09 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:09 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:09 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:09 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:09 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:09 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:09 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:09 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:10 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:10 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:10 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:10 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + " \r" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
distColorgid_Aid_Btext_Atext_B
10.470588Others13742286(big snowman: lined notebook by daisy ford design https://t.co/hyaailolb2 via @amazon #notebook #scho,)(blue cat: lined notebook by daisy ford design https://t.co/54jqdvxaom via @amazon #notebook #diary #,)
30.357143Others573620(@antonioguterres ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, ar,)(@joebiden ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, are trapp,)
40.307692Others573621(@antonioguterres ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, ar,)(@kamalaharris ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, are t,)
00.285714news7672933(@teacherinkinder @donorschoose @amazon hi, hello, howdy! happy #sundayvibes it’s #backtoschool &amp;,)(@mrs_al_13 @donorschoose @amazon hi, hello, howdy! happy #sundayvibes it’s #backtoschool &amp; my cl,)
50.230769Others620621(@joebiden ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, are trapp,)(@kamalaharris ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, are t,)
20.166667Others33208619(@janethlovsbooks @amazon i'm a hs #specialeducation teacher working with cognitively impaired studen,)(@techmidschteach @amazon i'm a hs #specialeducation teacher working with cognitively impaired studen,)
130.000000Others1341552(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)
180.000000Others11131552(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)
170.000000Others11131502(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)
160.000000Others1348711(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)
150.000000Others1343248(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)
140.000000Others1343212(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)
100.000000Others36285287(back to school with nhatthanh \\n@sontungmtp777\\n\\n#sontungmtp #theresnooneatall\\n#stanworld #backtoswsch,)(back to school with nhatthanh \\n@sontungmtp777\\n\\n#sontungmtp #theresnooneatall\\n#stanworld #backtoswsch,)
120.000000Others1341502(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)
110.000000Others1341113(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)
90.000000edu56285944(the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,)(the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,)
80.000000edu35565944(the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,)(the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,)
70.000000edu35565628(the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,)(the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,)
60.000000Others26433441(the algebra requirement needed to graduate is the most failed subject in community colleges. ,)(the algebra requirement needed to graduate is the most failed subject in community colleges. ,)
190.000000Others11133212(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)(time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,)
\n", + "
" + ], + "text/plain": [ + " distCol org id_A id_B \\\n", + "1 0.470588 Others 1374 2286 \n", + "3 0.357143 Others 573 620 \n", + "4 0.307692 Others 573 621 \n", + "0 0.285714 news 767 2933 \n", + "5 0.230769 Others 620 621 \n", + "2 0.166667 Others 3320 8619 \n", + "13 0.000000 Others 134 1552 \n", + "18 0.000000 Others 1113 1552 \n", + "17 0.000000 Others 1113 1502 \n", + "16 0.000000 Others 134 8711 \n", + "15 0.000000 Others 134 3248 \n", + "14 0.000000 Others 134 3212 \n", + "10 0.000000 Others 3628 5287 \n", + "12 0.000000 Others 134 1502 \n", + "11 0.000000 Others 134 1113 \n", + "9 0.000000 edu 5628 5944 \n", + "8 0.000000 edu 3556 5944 \n", + "7 0.000000 edu 3556 5628 \n", + "6 0.000000 Others 2643 3441 \n", + "19 0.000000 Others 1113 3212 \n", + "\n", + " text_A \\\n", + "1 (big snowman: lined notebook by daisy ford design https://t.co/hyaailolb2 via @amazon #notebook #scho,) \n", + "3 (@antonioguterres ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, ar,) \n", + "4 (@antonioguterres ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, ar,) \n", + "0 (@teacherinkinder @donorschoose @amazon hi, hello, howdy! happy #sundayvibes it’s #backtoschool &,) \n", + "5 (@joebiden ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, are trapp,) \n", + "2 (@janethlovsbooks @amazon i'm a hs #specialeducation teacher working with cognitively impaired studen,) \n", + "13 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "18 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "17 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "16 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "15 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "14 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "10 (back to school with nhatthanh \\n@sontungmtp777\\n\\n#sontungmtp #theresnooneatall\\n#stanworld #backtoswsch,) \n", + "12 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "11 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "9 (the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,) \n", + "8 (the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,) \n", + "7 (the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,) \n", + "6 (the algebra requirement needed to graduate is the most failed subject in community colleges. ,) \n", + "19 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "\n", + " text_B \n", + "1 (blue cat: lined notebook by daisy ford design https://t.co/54jqdvxaom via @amazon #notebook #diary #,) \n", + "3 (@joebiden ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, are trapp,) \n", + "4 (@kamalaharris ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, are t,) \n", + "0 (@mrs_al_13 @donorschoose @amazon hi, hello, howdy! happy #sundayvibes it’s #backtoschool & my cl,) \n", + "5 (@kamalaharris ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, are t,) \n", + "2 (@techmidschteach @amazon i'm a hs #specialeducation teacher working with cognitively impaired studen,) \n", + "13 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "18 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "17 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "16 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "15 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "14 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "10 (back to school with nhatthanh \\n@sontungmtp777\\n\\n#sontungmtp #theresnooneatall\\n#stanworld #backtoswsch,) \n", + "12 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "11 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) \n", + "9 (the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,) \n", + "8 (the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,) \n", + "7 (the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,) \n", + "6 (the algebra requirement needed to graduate is the most failed subject in community colleges. ,) \n", + "19 (time to return to learn! enter the $100 amazon gift card giveaway! #btevents #backtoschool https:/,) " + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "jaccard_distance = 0.5\n", + "df_dups_text_50 = model.approxSimilarityJoin(df_hashed_text, df_hashed_text, jaccard_distance).filter(\"datasetA.id < datasetB.id\").select(\n", + " col(\"distCol\"),col(\"datasetA.org\").alias('org'),\n", + " col(\"datasetA.id\").alias(\"id_A\"),\n", + " col(\"datasetB.id\").alias(\"id_B\"), \n", + " col('datasetA.tweet_text').alias('text_A'),\n", + " col('datasetB.tweet_text').alias('text_B')) \n", + "df_dups_txt_50 = df_dups_text_50\n", + "df_dups_text_50.limit(20).toPandas().sort_values('distCol',ascending=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ba91af15-40db-471c-a2f3-87ea69d62748", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "23/03/10 18:40:36 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:40:36 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:41:38 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:41:38 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:41:40 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:41:40 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:41:43 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:41:43 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:41:43 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:41:43 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:41:43 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:41:44 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:41:44 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:41:44 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:41:44 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:46 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:46 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:46 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:46 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:49 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:49 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:49 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:49 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:49 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:49 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:49 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:49 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:49 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:49 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:49 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:49 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:49 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:49 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:49 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:49 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:51 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:51 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:51 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:51 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:51 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:51 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:52 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:52 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:52 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:52 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:52 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:42:52 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "[Stage 113:> (0 + 1) / 1]\r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total records: 8807\n", + "Duplicate Tweets based on { 0.5 } jaccard distance: 858\n", + "Unique Tweets based on { 0.5 } jaccard distance: 0.5 : 7949\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "records = df_hashed_text.count()\n", + "dups_50 = df_dups_text_50.select('id_A').distinct().count()\n", + "uniques = records - dups_50\n", + "\n", + "print ('Total records: ', records)\n", + "print ('Duplicate Tweets based on {', jaccard_distance, '} jaccard distance: ', dups_50)\n", + "print ('Unique Tweets based on {', jaccard_distance, '} jaccard distance: ', jaccard_distance, ': ', uniques)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8fd033c1-0184-44ab-93ee-4e5478cd73c8", + "metadata": {}, + "outputs": [], + "source": [ + "df_dups_text_50.createOrReplaceTempView(\"tw_df\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "357146b3-705b-4792-9606-bfa919870798", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "23/03/10 18:43:16 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:43:16 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:43:16 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:43:16 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:20 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:20 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:20 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:20 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:20 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:20 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:20 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:20 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:21 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:21 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:21 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:21 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:21 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:21 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:21 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:21 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:21 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:21 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:21 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:21 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:21 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:21 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:21 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:21 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:24 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:24 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:24 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:24 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:24 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:24 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:24 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:24 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:24 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:24 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:24 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:24 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:24 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:24 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + " \r" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
orgcount(1)
0news14
1Others3117
2edu214
3ngo1
4gov37
5influencer13
\n", + "
" + ], + "text/plain": [ + " org count(1)\n", + "0 news 14\n", + "1 Others 3117\n", + "2 edu 214\n", + "3 ngo 1\n", + "4 gov 37\n", + "5 influencer 13" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dup_df_5 = spark.sql('select org,count(*) from tw_df group by org').toPandas()\n", + "dup_df_5" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6434dda6-c99c-4049-a039-9ae8f2ca3cfb", + "metadata": {}, + "outputs": [], + "source": [ + "df_hashed_text.createOrReplaceTempView(\"tw_df\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "089763bd-8bf5-47a0-9518-dbbbbe8f0179", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "23/03/10 18:44:48 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:44:48 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:45:50 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:45:50 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:45:53 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:45:53 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:45:56 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:45:56 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:45:56 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:45:56 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:45:56 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + " \r" + ] + } + ], + "source": [ + "all_df_5 = spark.sql('select org,count(*) from tw_df group by org').toPandas()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "121d43c6-8305-40c8-88cd-75b9e69944ac", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
orgcount(1)
0news530
1gov103
2edu1395
3influencer16
4Others6702
\n", + "
" + ], + "text/plain": [ + " org count(1)\n", + "0 news 530\n", + "1 gov 103\n", + "2 edu 1395\n", + "3 influencer 16\n", + "4 Others 6702" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "all_df_5.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "44264695-6642-4f6c-8711-114b6c80bc91", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
orgcount(1)
0news530
1gov103
2edu1395
4Others6702
5ngo61
\n", + "
" + ], + "text/plain": [ + " org count(1)\n", + "0 news 530\n", + "1 gov 103\n", + "2 edu 1395\n", + "4 Others 6702\n", + "5 ngo 61" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dup_df_5.sort_values(by='org',inplace=True)\n", + "all_df_5.drop(3,inplace=True)\n", + "all_df_5" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "487b0ac1-6bdc-4d29-aaf9-65ac460bb0b3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
orgcount(1)
1Others3117
2edu214
4gov37
5influencer13
0news14
3ngo1
\n", + "
" + ], + "text/plain": [ + " org count(1)\n", + "1 Others 3117\n", + "2 edu 214\n", + "4 gov 37\n", + "5 influencer 13\n", + "0 news 14\n", + "3 ngo 1" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dup_df_5" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0101cdec-f6f0-48c7-8273-d9f343e0d3cc", + "metadata": {}, + "outputs": [], + "source": [ + "all_df_5.sort_values(by='org',inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "593f0c55-c77b-4dd4-aecb-be5595d1920e", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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p6djyJAhJVEjERERUYkq8ghReHg4du3ahXr16sltbm5umD9/PidVExERUblU5BGi3NxcGBgY5Gk3MDBAbm5usRRFREREVJqKHIjeffddDB06FP/995/cdvPmTXz99ddo27ZtsRZHREREVBqKHIjmzZuHe/fuwdnZGTVr1kStWrXg4uKCe/fuYe7cuSVRIxEREVGJKvIcIicnJxw/fhw7d+5EXFwchBBwc3NDu3btSqI+IiIiohL3yusQ+fj4wMfHpzhrISIiItKJQp8y27NnD9zc3JCenp5nm0ajQf369bFv375iLY6IiIioNBQ6EM2ZMwdBQUGwtLTMs02lUqFfv36YNWtWsRZHREREVBoKHYhOnjyJDh06FLjd19cXx44dK5aiiIiIiEpToQPRrVu38l1/6Cl9fX2kpKQUS1FEREREpanQgahq1ao4ffp0gdtPnToFBweHYimKiIiIqDQVOhB16tQJ48ePx6NHj/Jsy8jIwIQJE+Dn51esxRERERGVBkkIIQrT8datW2jatCn09PQwaNAg1KlTB5Ik4dy5c5g/fz5ycnJw/Phx2Nvbl3TNOpGeng6VSgWNRpPvxPLXIUnFuruXEmGlfMCAQv2KERERFbvCfn8Xeh0ie3t7HDhwAF999RXGjh2LpzlKkiS0b98eCxYsqLBhiIiIiCq2Ii3MWL16dWzduhWpqam4ePEihBBwdXWFlZVVSdVHREREVOJeaaVqKysrvPnmm8VdCxEREZFOFPnmrkREREQVDQMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKZ5OA9G0adPw5ptvwsLCAnZ2dujatSvOnz+v1UcIgYkTJ8LR0REmJibw9vbGmTNntPpkZmZi8ODBqFKlCszMzNC5c2fcuHFDq09qaioCAwOhUqmgUqkQGBiItLS0kn6LREREVA7oNBBFRUVh4MCBiI6Oxs6dO/H48WP4+vriwYMHcp8ZM2Zg1qxZmDdvHo4cOQK1Wg0fHx/cu3dP7hMcHIxNmzZh3bp12L9/P+7fvw8/Pz/k5OTIfQICAhATE4Pw8HCEh4cjJiYGgYGBpfp+iYiIqGyShBBC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QERERESKx0BERIp25coVSJKEmJiYEj2Ot7c3goODS/QYRPTqGIiIqERdv34dffr0gaOjIwwNDVG9enUMHToUd+7c0XVpAAAnJyckJibC3d29WPYXGRkJSZKQlpam1b5x40Z89913xXIMIip+DEREVGIuX76M5s2b48KFC1i7di0uXryIRYsWYffu3fD09MTdu3fzfV1WVlap1ainpwe1Wg19/ZJdls3a2hoWFhYlegwienUMRERUYgYOHAhDQ0Ps2LEDXl5eeOONN9CxY0fs2rULN2/exLfffgsAcHZ2xpQpU9C7d2+oVCoEBQUBAH755Rc4OTnB1NQUH3zwAWbNmoXKlSvL+7906RK6dOkCe3t7mJub480338SuXbu0anB2dkZISAi++OILWFhY4I033sCSJUvk7c+fMuvduzckScrziIyMBACsXr0azZs3h4WFBdRqNQICApCcnCzvq02bNgAAKysrSJKE3r17A8h7yiw1NRU9e/aElZUVTE1N0bFjR8THx8vbQ0NDUblyZWzfvh316tWDubk5OnTogMTExNf+uRBRXgxERFQi7t69i+3bt2PAgAEwMTHR2qZWq9GjRw+sX78eT9eG/eGHH+Du7o5jx45h3Lhx+Pfff9G/f38MHToUMTEx8PHxwdSpU7X2c//+fXTq1Am7du3CiRMn0L59e7z//vu4du2aVr8ff/wRzZs3x4kTJzBgwAB89dVXiIuLy7fun376CYmJifJj6NChsLOzQ926dQE8Gb367rvvcPLkSfz5559ISEiQQ4+TkxP++OMPAMD58+eRmJiIn376Kd/j9O7dG0ePHsXmzZtx8OBBCCHQqVMneaVqAHj48CFmzpyJVatWYe/evbh27RpGjBhRyJ8AERWJICIqAdHR0QKA2LRpU77bZ82aJQCIW7duierVq4uuXbtqbe/evbt47733tNp69OghVCrVC4/r5uYm5s6dKz+vXr26+Oyzz+Tnubm5ws7OTixcuFAIIURCQoIAIE6cOJFnX3/88YcwMjIS+/btK/B4hw8fFgDEvXv3hBBCRERECAAiNTVVq5+Xl5cYOnSoEEKICxcuCADi33//lbffvn1bmJiYiN9++00IIcTy5csFAHHx4kW5z/z584W9vf0L3z8RvRqOEBGRToj/PzL09L5czZs319p+/vx5vPXWW1ptzz9/8OABRo0aBTc3N1SuXBnm5uaIi4vLM0LUsGFD+c+SJEGtVsunuQpy4sQJ9OzZE/Pnz0fr1q212rt06YLq1avDwsIC3t7eAJDnmC9y7tw56Ovrw8PDQ26zsbFBnTp1cO7cObnN1NQUNWvWlJ87ODi8tG4iejUMRERUImrVqgVJknD27Nl8t8fFxcHKygpVqlQBAJiZmWltF0LkuYmpeO7WiyNHjsQff/yBqVOnYt++fYiJiUGDBg3yTMo2MDDQei5JEnJzcwusPSkpCZ07d0afPn3Qp08fuf3Bgwfw9fWFubk5Vq9ejSNHjmDTpk0AijYR/Pn38Wz7s+85v7oLei0RvR4GIiIqETY2NvDx8cGCBQuQkZGhtS0pKQlhYWHo3r17gXdur1u3Lg4fPqzVdvToUa3n+/btQ+/evfHBBx+gQYMGUKvVuHLlymvV/ejRI3Tp0gV169bFrFmztLbFxcXh9u3b+P777/H222+jbt26eUZsDA0NAQA5OTkFHsPNzQ2PHz/GoUOH5LY7d+7gwoULqFev3mvVT0SvhoGIiErMvHnzkJmZifbt22Pv3r24fv06wsPD4ePjg6pVq+aZJP2swYMHY+vWrZg1axbi4+OxePFibNu2TStA1apVCxs3bkRMTAxOnjyJgICAF478FEa/fv1w/fp1/Pzzz0hJSUFSUhKSkpKQlZWFN954A4aGhpg7dy4uX76MzZs351lbqHr16pAkCX///TdSUlJw//79PMdwdXVFly5dEBQUhP379+PkyZP47LPPULVqVXTp0uW16ieiV8NAREQlxtXVFUePHkXNmjXRvXt31KxZE3379kWbNm1w8OBBWFtbF/jaVq1aYdGiRZg1axYaNWqE8PBwfP311zA2Npb7zJ49G1ZWVmjZsiXef/99tG/fHk2bNn2tmqOiopCYmAg3Nzc4ODjIjwMHDsDW1hahoaH4/fff4ebmhu+//x4zZ87Uen3VqlUxadIkjBkzBvb29hg0aFC+x1m+fDmaNWsGPz8/eHp6QgiBrVu35jlNRkSlQxI8IU1E5URQUBDi4uKwb98+XZdCRBVMyS7NSkT0GmbOnAkfHx+YmZlh27ZtWLFiBRYsWKDrsoioAuIIERGVWf7+/oiMjMS9e/dQo0YNDB48GP3799d1WURUATEQERERkeJxUjUREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKd7/AwLT+Lw7T4hgAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "index = np.arange(len(dup_df_5['org']))\n", + "index2 = np.arange(len(all_df_5['org']))\n", + "\n", + "bar_width = 0.35\n", + "opacity = 0.8\n", + "\n", + "ax.bar(index, dup_df_5['count(1)'], color='orange', align='edge', width=bar_width, label = 'Duplicate Count')\n", + "ax.bar(index2, all_df_5['count(1)'], color='blue', align='edge', width=-bar_width,label = 'Unique Count')\n", + "\n", + "# Assign the tick labels\n", + "ax.set_xticks(index)\n", + "ax.set_xticklabels(dup_df['org'], rotation=90)\n", + "\n", + "plt.xlabel('Organization')\n", + "plt.title('Tweet Similarity at Jaccard 0.5')\n", + "plt.ylabel('Count of Tweets')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f5715d3d-8590-4eaa-9e20-f2227822a64d", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "654052c7-a1d3-4529-ab08-85d953233347", + "metadata": {}, + "source": [ + "# Tweet Uniqueness Graph Based on Jaccard Similarity (0.7)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f038f73b-b467-439f-81e3-0166415ef4e4", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "23/03/10 18:45:58 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:45:58 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:45:58 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:45:58 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:02 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:02 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:02 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:02 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:02 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:02 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:02 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:02 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:04 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:04 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:04 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:04 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:04 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:04 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:04 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:04 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:05 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:05 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:05 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:05 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:05 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:05 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:05 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:05 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:06 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:06 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:06 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:06 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:06 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:06 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:06 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:06 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:06 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:06 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:06 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:06 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:06 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:06 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + " \r" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
distColorgid_Aid_Btext_Atext_B
20.684211Others13742811(big snowman: lined notebook by daisy ford design https://t.co/hyaailolb2 via @amazon #notebook #scho,)(happiest season: christmas notebooks by daisy ford design https://t.co/457fi08d26 via @amazon #noteb,)
40.684211Others22862811(blue cat: lined notebook by daisy ford design https://t.co/54jqdvxaom via @amazon #notebook #diary #,)(happiest season: christmas notebooks by daisy ford design https://t.co/457fi08d26 via @amazon #noteb,)
50.684211Others22863240(blue cat: lined notebook by daisy ford design https://t.co/54jqdvxaom via @amazon #notebook #diary #,)(blue toy train: lined notebook https://t.co/0affnq1pvo via @amazon #notebook #school #college #colle,)
100.647059Others32403958(blue toy train: lined notebook https://t.co/0affnq1pvo via @amazon #notebook #school #college #colle,)(paris diary: lined journal https://t.co/kzz0dizkhi via @amazon #notebook #journal #school #college #,)
80.647059Others31053958(santa claus on skates: lined notebook https://t.co/qs4f7x4uiv via @amazon #notebook #school #college,)(paris diary: lined journal https://t.co/kzz0dizkhi via @amazon #notebook #journal #school #college #,)
120.647059Others38473958(honey bee: lined notebook https://t.co/9qwplkfvom via @amazon #notebook #school #college #home #writ,)(paris diary: lined journal https://t.co/kzz0dizkhi via @amazon #notebook #journal #school #college #,)
30.615385Others18674165(@d900gt @amazon awesome 😁😁 @d900gt\\n\\n#theschooljourney #school #book #bookers,)(@d900gt @amazon oh wow, nice!! @d900gt \\n\\n#theschooljourney #school #book #bookers #deepikapadukone,)
60.588235Others31053240(santa claus on skates: lined notebook https://t.co/qs4f7x4uiv via @amazon #notebook #school #college,)(blue toy train: lined notebook https://t.co/0affnq1pvo via @amazon #notebook #school #college #colle,)
70.588235Others31053847(santa claus on skates: lined notebook https://t.co/qs4f7x4uiv via @amazon #notebook #school #college,)(honey bee: lined notebook https://t.co/9qwplkfvom via @amazon #notebook #school #college #home #writ,)
90.588235Others32403847(blue toy train: lined notebook https://t.co/0affnq1pvo via @amazon #notebook #school #college #colle,)(honey bee: lined notebook https://t.co/9qwplkfvom via @amazon #notebook #school #college #home #writ,)
10.470588Others13742286(big snowman: lined notebook by daisy ford design https://t.co/hyaailolb2 via @amazon #notebook #scho,)(blue cat: lined notebook by daisy ford design https://t.co/54jqdvxaom via @amazon #notebook #diary #,)
130.357143Others573620(@antonioguterres ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, ar,)(@joebiden ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, are trapp,)
140.307692Others573621(@antonioguterres ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, ar,)(@kamalaharris ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, are t,)
00.285714news7672933(@teacherinkinder @donorschoose @amazon hi, hello, howdy! happy #sundayvibes it’s #backtoschool &amp;,)(@mrs_al_13 @donorschoose @amazon hi, hello, howdy! happy #sundayvibes it’s #backtoschool &amp; my cl,)
150.230769Others620621(@joebiden ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, are trapp,)(@kamalaharris ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, are t,)
110.166667Others33208619(@janethlovsbooks @amazon i'm a hs #specialeducation teacher working with cognitively impaired studen,)(@techmidschteach @amazon i'm a hs #specialeducation teacher working with cognitively impaired studen,)
160.000000Others26433441(the algebra requirement needed to graduate is the most failed subject in community colleges. ,)(the algebra requirement needed to graduate is the most failed subject in community colleges. ,)
170.000000edu35565628(the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,)(the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,)
180.000000edu35565944(the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,)(the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,)
190.000000edu56285944(the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,)(the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,)
\n", + "
" + ], + "text/plain": [ + " distCol org id_A id_B \\\n", + "2 0.684211 Others 1374 2811 \n", + "4 0.684211 Others 2286 2811 \n", + "5 0.684211 Others 2286 3240 \n", + "10 0.647059 Others 3240 3958 \n", + "8 0.647059 Others 3105 3958 \n", + "12 0.647059 Others 3847 3958 \n", + "3 0.615385 Others 1867 4165 \n", + "6 0.588235 Others 3105 3240 \n", + "7 0.588235 Others 3105 3847 \n", + "9 0.588235 Others 3240 3847 \n", + "1 0.470588 Others 1374 2286 \n", + "13 0.357143 Others 573 620 \n", + "14 0.307692 Others 573 621 \n", + "0 0.285714 news 767 2933 \n", + "15 0.230769 Others 620 621 \n", + "11 0.166667 Others 3320 8619 \n", + "16 0.000000 Others 2643 3441 \n", + "17 0.000000 edu 3556 5628 \n", + "18 0.000000 edu 3556 5944 \n", + "19 0.000000 edu 5628 5944 \n", + "\n", + " text_A \\\n", + "2 (big snowman: lined notebook by daisy ford design https://t.co/hyaailolb2 via @amazon #notebook #scho,) \n", + "4 (blue cat: lined notebook by daisy ford design https://t.co/54jqdvxaom via @amazon #notebook #diary #,) \n", + "5 (blue cat: lined notebook by daisy ford design https://t.co/54jqdvxaom via @amazon #notebook #diary #,) \n", + "10 (blue toy train: lined notebook https://t.co/0affnq1pvo via @amazon #notebook #school #college #colle,) \n", + "8 (santa claus on skates: lined notebook https://t.co/qs4f7x4uiv via @amazon #notebook #school #college,) \n", + "12 (honey bee: lined notebook https://t.co/9qwplkfvom via @amazon #notebook #school #college #home #writ,) \n", + "3 (@d900gt @amazon awesome 😁😁 @d900gt\\n\\n#theschooljourney #school #book #bookers,) \n", + "6 (santa claus on skates: lined notebook https://t.co/qs4f7x4uiv via @amazon #notebook #school #college,) \n", + "7 (santa claus on skates: lined notebook https://t.co/qs4f7x4uiv via @amazon #notebook #school #college,) \n", + "9 (blue toy train: lined notebook https://t.co/0affnq1pvo via @amazon #notebook #school #college #colle,) \n", + "1 (big snowman: lined notebook by daisy ford design https://t.co/hyaailolb2 via @amazon #notebook #scho,) \n", + "13 (@antonioguterres ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, ar,) \n", + "14 (@antonioguterres ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, ar,) \n", + "0 (@teacherinkinder @donorschoose @amazon hi, hello, howdy! happy #sundayvibes it’s #backtoschool &,) \n", + "15 (@joebiden ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, are trapp,) \n", + "11 (@janethlovsbooks @amazon i'm a hs #specialeducation teacher working with cognitively impaired studen,) \n", + "16 (the algebra requirement needed to graduate is the most failed subject in community colleges. ,) \n", + "17 (the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,) \n", + "18 (the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,) \n", + "19 (the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,) \n", + "\n", + " text_B \n", + "2 (happiest season: christmas notebooks by daisy ford design https://t.co/457fi08d26 via @amazon #noteb,) \n", + "4 (happiest season: christmas notebooks by daisy ford design https://t.co/457fi08d26 via @amazon #noteb,) \n", + "5 (blue toy train: lined notebook https://t.co/0affnq1pvo via @amazon #notebook #school #college #colle,) \n", + "10 (paris diary: lined journal https://t.co/kzz0dizkhi via @amazon #notebook #journal #school #college #,) \n", + "8 (paris diary: lined journal https://t.co/kzz0dizkhi via @amazon #notebook #journal #school #college #,) \n", + "12 (paris diary: lined journal https://t.co/kzz0dizkhi via @amazon #notebook #journal #school #college #,) \n", + "3 (@d900gt @amazon oh wow, nice!! @d900gt \\n\\n#theschooljourney #school #book #bookers #deepikapadukone,) \n", + "6 (blue toy train: lined notebook https://t.co/0affnq1pvo via @amazon #notebook #school #college #colle,) \n", + "7 (honey bee: lined notebook https://t.co/9qwplkfvom via @amazon #notebook #school #college #home #writ,) \n", + "9 (honey bee: lined notebook https://t.co/9qwplkfvom via @amazon #notebook #school #college #home #writ,) \n", + "1 (blue cat: lined notebook by daisy ford design https://t.co/54jqdvxaom via @amazon #notebook #diary #,) \n", + "13 (@joebiden ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, are trapp,) \n", + "14 (@kamalaharris ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, are t,) \n", + "0 (@mrs_al_13 @donorschoose @amazon hi, hello, howdy! happy #sundayvibes it’s #backtoschool & my cl,) \n", + "15 (@kamalaharris ⚠️urgent⚠️\\nthe students at #sharif_university, first ranking university in iran, are t,) \n", + "11 (@techmidschteach @amazon i'm a hs #specialeducation teacher working with cognitively impaired studen,) \n", + "16 (the algebra requirement needed to graduate is the most failed subject in community colleges. ,) \n", + "17 (the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,) \n", + "18 (the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,) \n", + "19 (the latest national safety school! https://t.co/rqpfbuyjcx #education #edtech,) " + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "jaccard_distance = 0.7\n", + "df_dups_text_70 = model.approxSimilarityJoin(df_hashed_text, df_hashed_text, jaccard_distance).filter(\"datasetA.id < datasetB.id\").select(\n", + " col(\"distCol\"),col(\"datasetA.org\").alias('org'),\n", + " col(\"datasetA.id\").alias(\"id_A\"),\n", + " col(\"datasetB.id\").alias(\"id_B\"), \n", + " col('datasetA.tweet_text').alias('text_A'),\n", + " col('datasetB.tweet_text').alias('text_B')) \n", + "df_dups_txt_70 = df_dups_text_70\n", + "df_dups_text_70.limit(20).toPandas().sort_values('distCol',ascending=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e2c5e958-bd36-4975-9242-8574e8e9d9e6", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "23/03/10 18:47:32 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:47:32 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:48:34 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:48:34 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:48:36 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:48:36 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:48:38 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:48:38 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:48:38 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:48:39 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:48:39 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:48:40 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:48:40 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:48:40 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:48:40 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:39 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:39 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:39 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:39 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:42 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:42 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:42 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:42 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:42 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:42 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:42 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:42 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:43 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:43 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:43 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:43 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:43 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:43 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:43 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:43 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:44 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:44 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:44 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:44 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:44 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:44 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:44 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:44 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:45 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:45 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:45 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:45 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:45 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:49:45 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "[Stage 170:> (0 + 1) / 1]\r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total records: 8807\n", + "Duplicate Tweets based on { 0.7 } jaccard distance: 1303\n", + "Unique Tweets based on { 0.7 } jaccard distance: 0.7 : 7504\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "records = df_hashed_text.count()\n", + "dups_70 = df_dups_text_70.select('id_A').distinct().count()\n", + "uniques = records - dups_70\n", + "\n", + "print ('Total records: ', records)\n", + "print ('Duplicate Tweets based on {', jaccard_distance, '} jaccard distance: ', dups_70)\n", + "print ('Unique Tweets based on {', jaccard_distance, '} jaccard distance: ', jaccard_distance, ': ', uniques)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e5687fc4-275d-4bb3-a0a6-e1372ba2564a", + "metadata": {}, + "outputs": [], + "source": [ + "df_dups_text_70.createOrReplaceTempView(\"tw_df\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bfeddb22-f6a4-4f5d-89fd-104ef2b47dbd", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "23/03/10 18:50:08 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:50:08 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:50:08 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:50:08 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:11 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:12 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:12 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:12 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:12 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:12 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:12 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:12 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:12 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:14 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:14 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:14 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:14 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:14 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:14 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:14 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:14 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:14 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:14 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:14 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:14 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:14 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:14 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:14 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:14 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:15 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:15 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:15 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:15 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:15 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:15 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + " \r" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
orgcount(1)
0news45
1Others6684
2edu425
3ngo6
4gov48
5influencer13
\n", + "
" + ], + "text/plain": [ + " org count(1)\n", + "0 news 45\n", + "1 Others 6684\n", + "2 edu 425\n", + "3 ngo 6\n", + "4 gov 48\n", + "5 influencer 13" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dup_df = spark.sql('select org,count(*) from tw_df group by org').toPandas()\n", + "dup_df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7f8e7cd2-8c19-4488-9cee-e3261a970f61", + "metadata": {}, + "outputs": [], + "source": [ + "df_hashed_text.createOrReplaceTempView(\"tw_df\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c0c9b433-6a73-4147-8afa-803d1cd9b934", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "23/03/10 18:51:37 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:51:37 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:52:39 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:52:39 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:52:41 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:52:41 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:52:43 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:52:43 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:52:43 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:52:43 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n", + "23/03/10 18:52:44 WARN org.apache.spark.sql.execution.window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.\n" + ] + } + ], + "source": [ + "all_df = spark.sql('select org,count(*) from tw_df group by org').toPandas()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cf40c557-c131-4306-8e07-e151675afde3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
orgcount(1)
0news530
1gov103
2edu1395
3influencer16
4Others6702
\n", + "
" + ], + "text/plain": [ + " org count(1)\n", + "0 news 530\n", + "1 gov 103\n", + "2 edu 1395\n", + "3 influencer 16\n", + "4 Others 6702" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "all_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "572be640-122c-410b-9c0d-b18b25cf6bfe", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
orgcount(1)
0news530
1gov103
2edu1395
4Others6702
5ngo61
\n", + "
" + ], + "text/plain": [ + " org count(1)\n", + "0 news 530\n", + "1 gov 103\n", + "2 edu 1395\n", + "4 Others 6702\n", + "5 ngo 61" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dup_df.sort_values(by='org',inplace=True)\n", + "all_df.drop(3,inplace=True)\n", + "all_df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6fe99cfd-7a33-4b7b-be82-66a9c8c747c6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
orgcount(1)
1Others6684
2edu425
4gov48
5influencer13
0news45
3ngo6
\n", + "
" + ], + "text/plain": [ + " org count(1)\n", + "1 Others 6684\n", + "2 edu 425\n", + "4 gov 48\n", + "5 influencer 13\n", + "0 news 45\n", + "3 ngo 6" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dup_df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "61c3653c-652b-4bb9-b87b-fddcdcf64c89", + "metadata": {}, + "outputs": [], + "source": [ + "all_df.sort_values(by='org',inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "638b4e2d-149f-405e-a41f-6a865fe78da8", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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QExMDIKCgsr0cxIREVH5pa/zAvT1NUaFnhJCYO7cufj222/RvXt3AMDKlSthb2+PtWvXon///lCr1Vi+fDlWr16Njh07AgDWrFkDZ2dn7N69G506dUJcXBwiIiIQHR0NDw8PAMDPP/8MT09PXLhwAfXq1Su7D0tERETlks5HiBISEuDk5ARXV1d8+umnuHLlCgAgMTERycnJ8PX1lfsaGRnBy8sLhw4dAgCcOHECubm5Gn2cnJzQqFEjuc/hw4ehUqnkMAQArVu3hkqlkvsUJjs7GxkZGRobERERVU46DUQeHh5YtWoVduzYgZ9//hnJyclo06YN7t69i+TkZACAvb29xnvs7e3lfcnJyTA0NISVldUL+9jZ2RU4t52dndynMNOnT5fnHKlUKjg7O7/WZyUiIqLyS6eB6L333sNHH32Exo0bo2PHjvj7778BPLk09pQkSRrvEUIUaHve830K6/+y44wbNw5qtVrerl+/XqzPRERERBWPzi+ZPcvMzAyNGzdGQkKCPK/o+VGclJQUedTIwcEBOTk5SEtLe2Gf27dvFzhXampqgdGnZxkZGcHS0lJjIyIiosqpXAWi7OxsxMXFwdHREa6urnBwcMCuXbvk/Tk5OYiKikKbNm0AAC1btoSBgYFGn6SkJMTGxsp9PD09oVarcfToUbnPkSNHoFar5T5ERESkbDq9y2zkyJH44IMP8MYbbyAlJQVTp05FRkYGevfuDUmSEBISgtDQULi5ucHNzQ2hoaEwNTVFYGAgAEClUqFv374YMWIEbGxsYG1tjZEjR8qX4ACgQYMG6Ny5M4KDg7FkyRIAQL9+/eDn58c7zIiIiAiAjgPRjRs38Nlnn+HOnTuwtbVF69atER0djZo1awIARo8ejaysLAwcOBBpaWnw8PDAzp07YWFhIR9jzpw50NfXR0BAALKystChQweEhYVBT09P7hMeHo6hQ4fKd6N17doV8+fPL9sPS0REROWWJIQQui6iIsjIyIBKpYJarS7x+UQvmSNe4kR4GZ8wkD9iRESkG8X9/V2u5hARERER6QIDERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERER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JbfdvHkT33zzDTp06FCixRERERGVBa0D0fz585GZmQkXFxfUrl0bderUgaurKzIzMzFv3rzSqJGIiIioVGk9h8jZ2RknT57Erl27EB8fDyEE3N3d0bFjx9Koj4iIiKjUvfI6RD4+PvDx8SnJWoiIiIh0otiXzPbu3Qt3d3dkZGQU2KdWq9GwYUMcOHCgRIsjIiIiKgvFDkRz585FcHAwLC0tC+xTqVTo378/Zs+eXaLFEREREZWFYgei06dPo3PnzkXu9/X1xYkTJ0qkKCIiIqKyVOxAdPv27ULXH3pKX18fqampJVIUERERUVkqdiCqXr06zp49W+T+M2fOwNHRsUSKIiIiIipLxQ5EXbp0wYQJE/Do0aMC+7KysjBx4kT4+fmVaHFEREREZUESQojidLx9+zZatGgBPT09DB48GPXq1YMkSYiLi8OCBQuQl5eHkydPwt7evrRr1omMjAyoVCqo1epCJ5a/Dkkq0cO9lAgv4xMGFutHjIiIqMQV9/d3sdchsre3x6FDh/D1119j3LhxeJqjJElCp06dsHDhwkobhoiIiKhy02phxpo1a2Lbtm1IS0vDpUuXIISAm5sbrKysSqs+IiIiolL3SitVW1lZ4c033yzpWoiIiIh0QuuHuxIRERFVNgxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHgMRERERKR4DERERESkeAxEREREpHg6DUTTp0/Hm2++CQsLC9jZ2aFbt264cOGCRh8hBCZNmgQnJyeYmJjA29sb586d0+iTnZ2NIUOGoFq1ajAzM0PXrl1x48YNjT5paWkICgqCSqWCSqVCUFAQ0tPTS/sjEhERUQWg00AUFRWFQYMGITo6Grt27cLjx4/h6+uLBw8eyH1mzpyJ2bNnY/78+Th27BgcHBzg4+ODzMxMuU9ISAg2bdqE9evX4+DBg7h//z78/PyQl5cn9wkMDERMTAwiIiIQERGBmJgYBAUFlennJSIiovJJEkIIXRfxVGpqKuzs7BAVFYV33nkHQgg4OTkhJCQEY8aMAfBkNMje3h4zZsxA//79oVarYWtri9WrV6NHjx4AgFu3bsHZ2Rnbtm1Dp06dEBcXB3d3d0RHR8PD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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "index = np.arange(len(dup_df['org']))\n", + "index2 = np.arange(len(all_df['org']))\n", + "\n", + "bar_width = 0.35\n", + "opacity = 0.8\n", + "\n", + "ax.bar(index, dup_df['count(1)'], color='orange', align='edge', width=bar_width, label = 'Duplicate Count')\n", + "ax.bar(index2, all_df['count(1)'], color='blue', align='edge', width=-bar_width,label = 'Unique Count')\n", + "\n", + "# Assign the tick labels\n", + "ax.set_xticks(index)\n", + "ax.set_xticklabels(dup_df['org'], rotation=90)\n", + "plt.title('Tweet Similarity at Jaccard 0.7')\n", + "plt.xlabel('Organization')\n", + "plt.ylabel('Count of Tweets')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "70afcb09-6c5a-4d93-b49e-745784765139", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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Nm/eHLE+depUY1mWady4senZs6eJi4szkozL5TILFy4Me7wbbrgh4pyfffZZI8nccMMNYfdJT0+35+9yuUynTp1M165dTWxsbMT7XHTRRUaSadiwoenYsaPp3r27adKkiZFk3G63mT9/fsj422+/3XTu3NlIMrGxsaZv377219VXXx0ydsaMGcayLCPJNG7c2HTr1s3u2ev1mldeeaXc5/JwQ4YMMZLM3//+94i35+TkmKioKON2u83OnTuNMcYUFhaa3r17289F+/btTc+ePU1iYqJxuVxGksnOzq70HMqzefNme9s4fN0frnTcBx98EFIv3UaeeOIJ4/V6TVxcnOnRo4cJBAJGkvF4PGH3McaY5OTkiI9XVFRkP2eSzOmnn266dOli3G63admypbn99tuNJPPAAw+E3K+8ba7UAw88EPF+xhjz73//2/h8PiPJxMTEmK5du5qEhAQjyViWVe66K0/pXCJt5xUpfU7++te/mgYNGpiYmBjTo0cP07RpU/v5eP755+3xO3fuNH379jXNmjUzkkxSUlLIdv3MM8/YY0vvP23aNCPJxMfHm7PPPts0bdrUXvcVPYdVfY727Nlj2rZtayQZn89nOnXqZLp3726aNWtmLMsygUCg0s9L6XbaqlUrc+uttxpJpmXLlqZHjx4mKirKSDJNmzY169evD7lfnz59jKRyf14///xzI8kkJCSYoqKiI87jxx9/tJ/HVatWHXH8okWL7PE7duyw6x988IGRZPr162cuu+wyI8m0bdvW9OjRw5xxxhn2uAcffNC+f2JiounZs6eJiYkxUVFR5uGHHzaSTHJycthy3W63sSzLNGvWzHTt2tV07tzZREdHG0kmLi7OrF27Nuw+pet+0qRJJiEhwURFRZnu3bvbr8mSzEMPPRR2v0g/V6XbZXlfpa9hZbez559/3t5WWrVqZc4++2xz2mmn2WMvu+wyU1xcbI9/8803Td++fY3f7zeSTM+ePUOW8eWXXxpjQredw3333XemRYsW9nK7d+9uTjvtNLvf3/zmNyYYDIbcp/R32LBhw0y/fv2MZVnmjDPOMO3bt7fnOmDAgLBloe4hVOCEVNlQYYwxV111lZFkxowZE1J3Gio8Ho+56667TEFBgTGm5E3vvffea79BL/sL05iqh4qcnBzTsmVLI8lcfPHFZtu2bSG3f/TRR+aFF14Iqb388svmq6++CqkFg0Hz2muvmQYNGpjY2FiTm5sbcnvpL/NIv4hLLVmyxFiWZZo0aRL2ZmTOnDnG4/GYmJiYsJ7L89JLLxlJpk+fPhFvnzt3rpFk+vfvb9f+85//GEmmS5cuYc9FZmameeyxx8z+/fsrtfyKHM1Q4fV6zdSpU+03ZwUFBWb48OFGkunVq1fY45UXKh5//HEjyTRq1Mh8/PHHIXPt3Lmz8Xq9RzVUrF692vj9fhMVFWWefvrpkDcu//vf/0xsbKxxu90mPT29wucn0lyqGyq8Xq+5/fbbTV5enjGmZLu+77777DeXh78BPlLvxhxafz6fzzz99NP2m6XCwkJTWFhY4eNU5zn661//aiSZgQMHmp9//jnk8bZs2WIeffTRSj8vpdupx+MxXq/XvPTSS/ZtP/30k+nfv7+RZM4555yQN4H//Oc/jSQzdOjQiI87btw4I8ncc889lZrHyy+/bP8h4/A3m5H8/PPP9vNe9rWk9HXI7XabZs2ambS0NPu20nW+YsUK43K5jGVZZtasWfby9u/fb0aOHGn/HER6LZs9e7b58ccfQ2oHDhywg0hKSkrYfUrXvdfrNVdffXXIHy2efPJJI8lERUWF/TGjorAeyZQpU+xQmJmZaddXr15tXn/9dXPw4MGQ8Rs3bjT9+vUzkszcuXPDHq+8312lygsVwWDQ9OzZ034OMzIy7NuWLFlih7Ann3wy5H6lv8O8Xq/p1KmT2bBhg33bp59+av8RbMmSJZV6PlB7ESpwQqpKqBg/fryRZH71q1+F1J2Gii5dukS8X/fu3Y0k8+c//zmkXtVQMX36dCPJdOzYMeyXSnX88Y9/NJLC9lZUJlSU9vTf//434u133323kWQefPDBSs1l//79pkGDBuX+4hs0aJCRFPJX5alTpxpJ5vHHH6/UMqrraIaKIUOGhN0nKyvL/kvi7t27Q26LFCqCwaAdLv/xj3+EPd4XX3xhz+NohYorr7yywuf6iSeeMJLMzTffHPH2SErncqSvRYsWhdyv9Dnp0qVLyBt3Y0pCWumegdK/wla2d2MOrb9x48Ydcd6HP051nqMxY8ZU+HNUFWW30zvuuCPs9l27dtl7LN5//327npuba6Kjo43X6w15A2tMyfNZumdzzZo1lZrHY489ZiSZbt26VXruDRs2DHvuSl+HDg8bZf361782ksxvf/vbsNsKCgpMu3btjvhaFsl5551nJJnt27eH1EvXfUJCgtm3b1/Y/UpfF1999dWQelVCxeuvv25cLpepX79+2DZcke+//77cPQDVDRXvvPOOkWT8fr+9h7is0t9JrVq1CgmQpb/DLMsyK1euDLvfXXfdVe52irqFYypw0ouOjpZUcgaSo2ns2LEV1p0eiPjf//5XUslZVfx+f6Xvt3XrVk2bNk3XXnutLrzwQp133nk677zz9O9//1tSyXnkq2LLli368ssv1axZMw0dOjTimNL60qVLK/WY9evX1+WXXy5JWrBgQchtWVlZeu+99+T3+3XVVVfZ9RYtWkiS3njjDR04cKBKPdSU3/72t2G1Jk2a2J9l3rRp0xEfY926ddq6dauioqIiHnfTvXt39e7d2+lUbQUFBXrzzTfldrvLPc6nquu7rGbNmqlv377lfpV3+uebb75ZLlforzSv16suXbpIqtxzWZ7f/OY3VRpf3eeodBtetGhR2OfhnbjtttvCas2aNdPVV18tKfS1KCYmRldffbUKCwv14osvhtznjTfe0E8//aSePXvqjDPOqNSyS19XS19nK6Oi1+RAIGC/Nhzu3XfflVRynMzhvF6vRowYUeFyP//8c02YMEFDhw5VcnKy/dr47bffSpK++uqriPe7/vrrI/Z39tlnS6r+trdhwwYNHz5cwWBQzzzzjLp16xY2Jj8/Xy+++KJGjx6tQYMG6fzzz9d5552nG264QVLVX88r8vbbb0uSrrnmGiUkJITd/rvf/U5+v19btmzRhg0bwm7v2rWrevbsGVZ3+jyh9uCUsjjp7du3T5IUGxt7VB+3Y8eOFdZLf1FV17p16ySpSm8Y582bp9/97nc6ePBguWN2795dpXl8/fXXkkquA3LeeedFHFO6vB9//LHSjzts2DDNnz9fL730kiZMmGDXX375ZRUVFWnw4MEhpwG+4oor1Lp1a7399ttKTEzUxRdfrPPPP18pKSmVfgN0vLVt2zZivVmzZtqwYYO9bVakdDtq1apVudev6Nixo5YvX179iR62vIMHD8rn8+nSSy+NOMb8crBmVdZ3qeqeUrai51JSpZ7L8pT3s1ye6j5HN910k/7yl79o7ty5WrJkib0NX3DBBTrttNOqNXev16t27dpFvK2816Kbb75Z8+bN07x583TnnXfa9dKD26tyvZqYmBhJqtKBuKVjS+9bVlJSktxud1g9OztbP/30kyTprLPOivi45dWNMbr99tuPeCB8ea+Nx2Lby8nJ0eWXX66cnBxNnDhRv/71r8PGbN26VQMHDoz4Bv5Ic66O0u2kU6dOEW+PiYlRixYt9P333+vbb79Vhw4dQm4/lj+jqB0IFTjplZ7Zo/SF7Wgp7/Hi4+MlOd8zkpubK0kRL14UycaNGzV69GgVFhbq7rvv1ogRI9S2bVs1aNBAlmVpzpw59u1VkZOTY8/nk08+qXBsXl5epR934MCBatKkib766it988039i+yl156SVJJ6CgrOjpaH3/8sf785z/rP//5j/7973/be186deqkRx55RIMHD6708stT9g1NcXFxuePK/qU50pug0jlHUvoX99I3nhUp/UXctGnTcseUbnNHQ+n6LigoOOL6rii8Hm1H47ms6mOXp7rPUWJioj799FP96U9/0htvvGG/sZdK/ngwY8YM9enTp0pziYuLC9uDU6q816J+/fopKSlJq1at0tdff60zzzxTP/30k9544w35fD5df/31lV5+6QXUNm/eLGPMES9qt3v3bvtKz5EuvlbeuigNIpZlqUGDBhHHRAopkvT888/rySefVHR0tP7yl79owIABOuWUU+zT3o4YMULz588v97XxaG97wWBQw4YN04YNG3TZZZeFnQmr1I033qgNGzaoV69emjx5srp27arGjRvL6/WqqKjI/vdoKX2tqeh3ZXx8vL7//vuIv9+O5c8oagc+/oSTWjAY1KeffipJOueccyKOKe+F7kh/ecvKyopYz8zMlFT+L7jKKr1/6S/gI1m4cKEKCwv161//Wn/961/VtWtXxcTE2L/kDz+lbmWV/gLv27evTMlxWuV+HX763Yp4PB774xmlQWLbtm365JNPFBMTEzEgnHrqqfrXv/6l3bt3a/ny5Zo2bZp69uypb775RldccYVWrFhRrR7LKrt3pKLnvuxtx/LCiqXPf3nbm3Romztc6bqvyjZeurxTTjnliOv7ZH2T4OQ56tixo/7zn/9oz549+uCDDzRp0iR16NBBy5cv18CBA6v0MySVnP4zGAxGvK2i16LSvRGloeall15SYWGhhg4dqsaNG1d6+aUhaM+ePZX6KM5HH30Udt/KKH3Daowp97W5vD/kzJ8/X5L0t7/9Tbfeeqt9etZS1X1trK6JEyfq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u+bMmaOsrCy7Pnz4cLVr104zZswI2aBuvfVWBQIBTZs2LWQOE7o2Vk5BULO+2WPXfC5LE7vFaVNuoeZ/n2vXm0a5NfaMRlq9O1+Lt+yz621jvRqRFNCyjANaujPPrneL82to6xgt2bpPq34+tNEnN6+nlMRoLdyUq425hzbiIa0aqHuTKM1Zv0dZBw9trLENspXri1OX7GVylwkKa2J7qcAdpe7ZS0N6+rJRsnzFB9U5d4VdK5ZbqxqnKLYwW6fvS7free5orQ30Vlz+TrU+sN6u53ga67vYbmqe94MSD26261n+RG2J7qiWB75V0/wddn1HVBvtqH+a2u79StOmfXiop6O1niZMUM7B4lq9noa3i1W7gE8zvspWQdBI6dOO3FNOjmbNmnWoJ59PEydO1KZNmzR//vxDPTVtqrFjx2r16tVavHjxoZ7attWIESO0bNkyLV16aDuosZ8neqIneqIneqInegrp6UgsUzYu1TKWZWnRokW64oorJElpaWnq27evfvzxRyUmJtrjbrnlFm3ZskVvvfWWXnzxRd10001hiW/gwIFq06aNZs+erSlTpmju3Ln69ttvQ8acfvrpuummmzRx4sSI84m0p6JFixbKzMxUbGyspBpIrqlPS6obeyqu3tKlTu2pWDim96GejuZfGF7/R61eT2F7Ki6+5cg98ZcgeqIneqIneqKnE7qnI6lTeypKWZYV8r0xJqx2uMPHRBp/pMfx+/3y+/2Vqnu93oiP4fP5qlSPtLyQuvvQYTGWJL87fP4uy4pYd7ssuRVe97gseSLUvS7rl6UcNnd3JetWyVyDVuTNLljO5hixbrkUjHBIkLFcMlWqu2XCqlLQckd87qu9nsqwylkftWY9lc69dNs6rIdye4pQd7lcEetut1tutzus7vF4Ir5wHbefpzLoiZ4keqqoTk/0RE8nV09HUusO1K5IQkKCJCkjIyOknpmZqfj4eHtMQUGBsrOzKxyza9eusMfPysqyxwAAAAConDoVKtq0aaOEhAS98847dq2goEBLly7VueeeK0nq0aOHvF5vyJidO3dqzZo19pg+ffooJydHn332mT1mxYoVysnJsccAAAAAqJxa9/Gnffv26fvvv7e/37x5s9LT09W4cWO1bNlS48eP15QpU5SUlKSkpCRNmTJF9evX17BhwyRJgUBAo0aN0t133624uDg1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+pMk6YsvvtDFF1+s3bt3q3Xr1vrwww/VokWLGp4lDnfhhRdWeLtlWXrvvfeO02xQGT179tTNN9+s66+/Xo0aNarp6aAKoqKi9NZbbyk5ObmmpwIHtm3bprVr1+rss89WXFxcTU8HR/Dtt9/q559/VpMmTZSUlFTT0zlhsKcCx8ycOXPUsGFD+/v77rtPjRs31qOPPipjjB566KGamxzKFQwGZYwJ+crKytKyZcv07bffir9D1D5ut1u33367EhMTdf311+vtt99mPdURp512mjIyMmp6GqiCP/7xj/q///s/+/t3331Xp59+ui677DKdfvrpWrt2bQ3ODhV5+eWX1apVK3Xs2FHnnXeeOnTooFatWuk///lPTU/thMCeChwzjRo10sKFCzVgwADt3btXcXFxWrBgga688ko9//zz+vOf/6zNmzfX9DRRSd9++60uv/xyPfXUU/xVtRbasGGD/vWvf+mFF15QRkaGEhMTdeONN+qGG25Qu3btanp6KMfs2bP11FNPaenSpYqNja3p6aASOnbsqLvuukujR4+WJPXu3VvGGN1///2aNGmS2rdvr5deeqmGZ4nDvfnmmxoyZIjOOOMMjRw5UomJifrxxx/1wgsv6JtvvtHixYt1ySWX1PQ06zRCBY6Z+vXr680331RKSorefvttXXrppdq9e7diY2P18ccfa+DAgcrLy6vpaaIK/vWvf2n27NlasWJFTU8F5QgGg0pNTdWzzz6r119/XQUFBTrvvPO0dOnSmp4aIrjjjju0aNEi7d+/XxdeeKGaN28uy7Ls2y3L0uOPP16DM8ThYmNj9d///lcXXHCBfv75ZzVr1kxvvvmmBg0apIULF+ruu+/Wtm3banqaOEzfvn0VGxurN954Qy7XoQ/qGGN0ySWXaO/evfrkk09qcIZ1n6emJ4ATV8uWLfXxxx8rJSVF//3vf9W1a1f7L3FZWVn8Va4Oat26tdasWVPT00AFXC6XLr30Ul166aX65JNPdP3112vZsmU1PS2UY+bMmfb/X3311bDbCRW1jzFGwWBQkvTJJ5/I7XarX79+kqTmzZvrp59+qsnpoRzp6elasGBBSKCQSn7Gxo4dq2HDhtXQzE4cHFOBY2bEiBF68MEH1aNHD82ePVsjRoywb/v88891+umn1+DsUB2vvPKKEhMTa3oaqMDevXv1z3/+U+eee676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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "# Define custom colors\n", + "bar_colors = ['#1F77B4', '#FFA07A']\n", + "\n", + "# Create figure and axis objects\n", + "fig, ax = plt.subplots(figsize=(10, 8))\n", + "\n", + "# Define bar width and opacity\n", + "bar_width = 0.4\n", + "opacity = 0.8\n", + "\n", + "# Define index arrays for each set of bars\n", + "index = np.arange(len(dup_df['org']))\n", + "index2 = np.arange(len(all_df['org']))\n", + "\n", + "# Create the two sets of vertical bars\n", + "ax.bar(index, dup_df['count(1)'], color=bar_colors[0], align='edge', width=bar_width, alpha=opacity, label='Duplicates')\n", + "ax.bar(index2, all_df['count(1)'], color=bar_colors[1], align='edge', width=-bar_width, alpha=opacity, label='Unique')\n", + "\n", + "# Set the tick labels and axis limits\n", + "ax.set_xticks(index)\n", + "ax.set_xticklabels(dup_df['org'], fontsize=12, rotation=90)\n", + "ax.set_ylim(bottom=0)\n", + "ax.set_ylabel('Count', fontsize=14)\n", + "ax.set_xlabel('Organization', fontsize=14)\n", + "\n", + "# Add a title and adjust the subplot spacing\n", + "ax.set_title('Duplicate vs. Unique Entries by Organization', fontsize=16)\n", + "plt.subplots_adjust(left=0.2, right=0.9, top=0.9, bottom=0.1)\n", + "\n", + "# Add a legend with custom formatting\n", + "legend = ax.legend(loc='upper right', fontsize=12)\n", + "for i, text in enumerate(legend.get_texts()):\n", + " plt.setp(text, color=bar_colors[i], weight='bold')\n", + "\n", + "# Remove spines and set a grid\n", + "ax.spines['right'].set_visible(False)\n", + "ax.spines['top'].set_visible(False)\n", + "ax.yaxis.grid(color='gray', linestyle='dashed')\n", + "\n", + "# Show the plot\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}