Web application for TweetSets.
1.4K
Twitter datasets for research and archiving.
TweetSets allows users to (1) select from existing datasets; (2) limit the dataset by querying on keywords, hashtags, and other parameters; (3) generate and download dataset derivatives such as the list of tweet ids and mention nodes/edges.
TweetSets can be run in different modes. The modes determine which datasets are available and what type of dataset derivates can be generated.
These modes allow conforming with the Twitter policy that prohibits sharing complete tweets with 3rd parties.
Modes are configured in the .env file as described below.
vm_max_map_count as described in the ElasticSearch documentation.Create data directories on a volume with adequate storage:
mkdir -p /tweetset_data/redis
mkdir -p /tweetset_data/datasets
mkdir -p /tweetset_data/elasticsearch/esdata1
mkdir -p /tweetset_data/elasticsearch/esdata2
chown -R 1000:1000 /tweetset_data/elasticsearch
Note:
esdata<number> directory for each ElasticSearch container.redis and esdata<number> directories must be ugo+rwx.Clone or download this repository:
git clone https://github.com/justinlittman/TweetSets.git
Change to the docker directory:
cd docker
Copy the example docker files:
cp example.docker-compose.yml docker-compose.yml
cp example.env .env
Edit .env. This file is annotated to help you select appropriate values.
Create dataset_list_msg.txt. The contents of this file will be displayed on the dataset list page. It can
be used to list other datasets that are available, but not yet loaded. If leaving the file empty then:
touch dataset_list_msg.txt
Bring up the containers:
docker-compose up -d
For HTTPS support, uncomment and configure the nginx-proxy container in docker-compose.yml.
Clusters must have at least a primary node and two additional nodes.
Create data directories on a volume with adequate storage:
mkdir -p /tweetset_data/redis
mkdir -p /tweetset_data/datasets
mkdir -p /tweetset_data/elasticsearch
chown -R 1000:1000 /tweetset_data/elasticsearch
Clone or download this repository:
git clone https://github.com/justinlittman/TweetSets.git
Change to the docker directory:
cd docker
Copy the example docker files:
cp example.cluster-primary.docker-compose.yml docker-compose.yml
cp example.env .env
Edit .env. This file is annotated to help you select appropriate values.
Create dataset_list_msg.txt. The contents of this file will be displayed on the dataset list page. It can
be used to list other datasets that are available, but not yet loaded. If leaving the file empty then:
touch dataset_list_msg.txt
Bring up the containers:
docker-compose up -d
For HTTPS support, uncomment and configure the nginx-proxy container in docker-compose.yml.
Create data directories on a volume with adequate storage:
mkdir -p /tweetset_data/elasticsearch
chown -R 1000:1000 /tweetset_data/elasticsearch
Clone or download this repository:
git clone https://github.com/justinlittman/TweetSets.git
Change to the docker directory:
cd docker
Copy the example docker files:
cp example.cluster-node.docker-compose.yml docker-compose.yml
cp example.cluster-node.env .env
Edit .env. This file is annotated to help you select appropriate values. Note that 2 cluster nodes
must have MASTER set to true.
Bring up the containers:
docker-compose up -d
.env.dataset.json. See example.dataset.json for
the format of the file.Start and connect to a loader container:
docker-compose run --rm loader /bin/bash
Invoke the loader:
python tweetset_loader.py create /dataset/path/to
To see other loader commands:
python tweetset_loader.py
Note that tweets are never added to an existing index. When using the reload command, a new index is created
for a dataset that replaces the existing index. The new index replaces the old index only after the new index
has been created, so user's are not effected by reloading.
When using the Spark loader, the dataset files must be located at the dataset filepath on all nodes (e.g., by having separate copies or using a network share such as NFS).
In general, using Spark withing Docker is tricky because the Spark driver, Spark master, and Spark nodes all need to be able to communicate and the ports are dynamically selected. (Some of the ports can be fixed, but supporting multiple simultaneous loaders requires leaving some dynamic.) This doesn't play well with Docker's port mapping, since the hostnames and ports that Spark advertises internally must match what is available through Docker. Further complicating this is that host networking (which is used to support the dynamic ports) does not work correctly on Mac.
Start and connect to a loader container:
docker-compose -f loader.docker-compose.yml run --rm loader /bin/bash
Invoke the loader:
spark-submit \
--jars elasticsearch-hadoop.jar \
--master spark://$SPARK_MASTER_HOST:7101 \
--py-files dist/TweetSets-0.1-py3.6.egg,dependencies.zip \
--conf spark.driver.bindAddress=0.0.0.0 \
--conf spark.driver.host=$SPARK_DRIVER_HOST \
tweetset_loader.py spark-create /dataset/path/to
Elastic's Kibana is a general-purpose framework for exploring, analyzing, and visualizing data. Since the tweets are already indexed in ElasticSearch, they are ready to be used from Kibana.
To enable Kibana, uncomment the Kibana service in your docker-compose.yml. By default, Kibana will run on
port 5601.
A few notes about Kibana:
Please cite TweetSets as:
Justin Littman. (2018). TweetSets. Zenodo. https://doi.org/10.5281/zenodo.1289426
Content type
Image
Digest
Size
956.9 MB
Last updated
about 8 years ago
docker pull justinlittman/tweetsets-server