需求:将hive中的数据读取出来,写入es中。
环境:spark 2.0.2
1. SparkSession里设置enableHiveSupport()
|
|
2. pom 添加依赖 ( 对hive版本没要求 )
|
|
或者
|
|
3. 将配置文件放在spark的conf下
参考官方文档
|
|
4. spark.sql读取数据
|
|
5. hive sql 语句
需求:合并两个字段,组成一个新的字符串。
可以先用udf
注册一个函数
|
|
求某字段的平均值(输出为int型)、某字段的最大/最小值、日期字段格式化输出等等。这种需求则都可以在hive语句中实现。
|
|
- unix_timestamp 获取当前时间戳
- cast(expression AS data_type) 数据类型转换
- from_unixtime(unix_timestamp(),’yyyy-MM-dd HH:mm:ss’) 日期格式化输出
6. 写es
通过 ds.show()查看数据是否正确
|
|
项目打包
- mvn package 普通打包
- mvn assembly:assembly 包含依赖包
遇到的问题
如果读取不到数据。先确认以下配置:
- 在
/etc/hosts
中确保127.0.0.1 hostname
已添加 - 查看
$SPARK_HOME/conf/spark-env.sh
, 确保ip地址是否正确
问题: Hive Schema version 2.1.0 does not match metastore
|
|