我将这些数据插入到弹性搜索中:
[
{ "name": "Cassandra Irwin", "location": "Monzon de Campos" .. },
{ "name": "Gayle Mooney", "location": "Villarroya del Campo" .. },
{ "name": "Angelita Charles", "location": "Revenga de Campos" .. },
{ "name": "Sheppard Sweet", "location": "Santiago del Campo" .. },
..
..
Run Code Online (Sandbox Code Playgroud)
旁注:重现: 1)下载: http: //wmo.co/20160928_es_query/bulk.json 2)执行:curl -s -XPOST ' http://localhost:9200/testing/external/_bulk?pretty ' --数据二进制@bulk.json
问题:获取每个“位置”有多少条记录的计数。
解决方案 1:桶聚合..没有给出期望的结果
curl -s -XPOST 'localhost:9200/testing/_search?pretty' -d '
{
"aggs": { "location_count": { "terms": { "field":"location", "size":100 }}}
}' | jq '.aggregations'
Run Code Online (Sandbox Code Playgroud)
结果: …
摘要:我无法让我的python-spark作业在hadoop集群的所有节点上运行。我已经安装了hadoop'spark-1.5.2-bin-hadoop2.6'的火花。启动java spark作业时,负载分布在所有节点上,而启动python spark作业时,只有一个节点承担负载。
设置:
我将一堆古腾堡文件(谢谢约翰内斯!)复制到hdfs上,并尝试使用Java和python在文件的子集(以'e'开头的文件)上进行单词计数:
Python:
使用自制的python脚本进行字数统计:
/opt/spark/bin/spark-submit wordcount.py --master yarn-cluster \
--num-executors 4 --executor-cores 1
Run Code Online (Sandbox Code Playgroud)
Python代码分配了4个部分:
tt=sc.textFile('/user/me/gutenberg/text/e*.txt',4)
Run Code Online (Sandbox Code Playgroud)
在60秒内在4个节点上加载:
Java的:
使用在spark发行版中找到的JavaWordCount:
/opt/spark/bin/spark-submit --class JavaWordCount --master yarn-cluster \
--num-executors 4 jwc.jar '/user/me/gutenberg/text/e*.txt'
Run Code Online (Sandbox Code Playgroud)
结论:java版本将其负载分布在整个群集中,而python版本仅在1个节点上运行。
问题:如何同时获得python版本以在所有节点之间分配负载?