GDELT介紹
GDELT是國外一個大數(shù)據(jù)存儲項目,它提供了自1979年至今的全球廣播、印刷和網(wǎng)絡(luò)新聞媒體報道的事件,并按時間和位置索引。其數(shù)據(jù)量十分龐大,類別也很豐富。教程里使用的是這個地址下的數(shù)據(jù),更新的頻率為15分鐘。教程使用2018年1月的數(shù)據(jù)進(jìn)行試驗。
下載數(shù)據(jù)
使用一個shell腳本批量下載這些文件(注意:官網(wǎng)教程里的腳本有誤):
#!/bin/bash
mkdir gdelt && cd gdelt
for day in {25..31}; do
mkdir 201801$day && cd 201801$day;
for hour in {00..23}; do
for minute in 00 15 30 45; do
wget "http://data.gdeltproject.org/gdeltv2/201801${day}${hour}${minute}00.export.CSV.zip"
done
done
cd ..
done
將數(shù)據(jù)解壓并上傳到HDFS中
使用如下的腳本完成:
#!/bin/bash
for day in {01..31}; do
ls 201801$day/*.zip | xargs -n 1 zcat | hadoop fs -put - /gdelt/uncompressed/201801${day}.tsv
done
開始寫入
執(zhí)行如下的命令,geomesa的命令行工具會啟動一個MapReduce任務(wù),將hdfs中的數(shù)據(jù)文件寫入到數(shù)據(jù)庫中(我安裝的是HBase),并構(gòu)建索引。
geomesa-hbase ingest \
--catalog <table> \
--feature-name gdelt \
--converter gdelt2 \
--spec gdelt2 \
"hdfs://host:port/gdelt/uncompressed/*"
其中 table是要寫入的表的名稱。
然后就是等待寫入完成,我運行時(3個節(jié)點,每個節(jié)點2核,4G內(nèi)存)大概等待了40分鐘左右,下面是運行正常時的輸出結(jié)果。
INFO Creating schema 'gdelt'
INFO Running ingestion in distributed mode
INFO Submitting job - please wait...
INFO Tracking available at http://namenode/proxy/application_xxxxxxx/
[============================================================] 100% complete xxxxxx ingested 0 failed in 00:00:45
INFO Distributed ingestion complete in 00:00:45
INFO Ingested xxxxxx features with no failures.
可以用下面的語句驗證導(dǎo)入是否成功:
--feature-name gdelt \
--catalog <table> \
--max-features 10
其中 table是寫入數(shù)據(jù)的表的名稱。
到這里,GDELT數(shù)據(jù)導(dǎo)入就完成了
使用geoserver可視化
如何安裝geoserver以及安裝geomesa插件,并根據(jù)已有數(shù)據(jù)發(fā)布地圖服務(wù),在之前的文章中已經(jīng)說明,這里就不再敘述了。這里主要演示熱力圖的生成方法。
首先將Geomesa目錄中的geomesa-process-wps_2.11-2.0.2.jar包,復(fù)制到geoserver庫目錄geoserver/WEB-INF/lib/下,以實現(xiàn)密度計算功能。
然后在geoserver后臺的Style設(shè)置中,新建一個樣式,導(dǎo)入官網(wǎng)提供的SLD文件,并命名。

在已生成圖層的“發(fā)布”一欄中,將style樣式選為剛剛新建的樣式,點擊“保存”。

就可以看到以熱力圖的形式呈現(xiàn)的數(shù)據(jù)了(如果有底圖效果會更好一些)~
