elasticsearch-hadoop使用示例
2016-01-07 15:26
267 查看
在elasticsearch-hadoop的具体使用中碰到了几个问题,有必要记录一下,避免下次遇到时又要重新研究。
利用spark读取es数据源的简单示例
import org.elasticsearch.spark.sql._ val esOptions = Map("es.nodes"->"192.168.1.2,192.168.1.3", "es.scroll.size"->"1000", "es.field.read.as.array.include"->"SampleField") val esDF = sqlContext.read.format("org.elasticsearch.spark.sql").options(esOptions).load("sampleindex/es-spark") esDF.registerTempTable("esdemotbl")
es.scroll.size 一次性读入的记录数,默认是10, 如果不设置为大一点的值,要从es中读取1亿条数据,那将是一个漫长的过程
es.field.read.as.array.include 有的字段在es中是以string类型存储,但其中包含逗号(,), spark默认认为这是数组类型,如果读取这种字段的话,就会报错,怎么办,那就用es.field.read.as.array.include来显式指明
spark读取es中数据的时候,partition数目取决于es中指定index的shard数目,为了获得比较高的并发读取性能,建议适当设置shard数目,为什么是适当,因为具体取决于集群规模等多种因素。
字段名的大小写问题
在hive中,字段名是_大小写不敏感_的, 但在ES中是大小写敏感的你说,这又怎么样。 呵呵, 这意味着不做特殊处理,永远无法读出es中大写字段名的内容,你看到的将是满屏的_NULL_
这该怎么破,很简单,指定 es.mapping.names
比如在es中,字段名为DemoField, 要读出其中的内容,hive表的字义就该这样写
create external table es_demo_tbl( demofield string) STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler' TBLPROPERTIES('es.nodes'='192.168.1.2,192.168.1.3', 'es.resource'='demoindex/sample', 'es.mapping.names'='demofield:DemoField')
注意是先hive中的字段名,然后是es中的字段名
相关文章推荐
- Linux inode 索引节点已满导致服务无法开启的详细解决方法
- 17.shell脚本编程(2)
- linux各文件夹的作用
- CentOS 7 安装MySQL
- 网站优化的那些事
- 加密和解密基础知识、linux上的私有CA实现方法、学习总结
- 解决linux看温度是报错No sensors found问题
- 正篇 一. 开发前须知 1.2Android 关于项目架构的问题:(
- Linux Shell删除某一个目录下的所有文件夹(保留其他文件)
- Hadoop2.2.0已经遗弃的属性名称
- 那些年我们一起做过的shell面试题(二)
- ng-option 的两种写法
- Linux中的ps命令
- Linux集群系统Heartbeat
- auto_ptr、shared_ptr、weak_ptr、scoped_ptr用法小结
- Linux下chkconfig命令详解
- ceph对象存储(rgw)服务、高可用安装配置
- linux常用命令的英文单词缩写
- COMODO杀毒软件Linux版
- 安装 Python2.7到 centos