欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > 06-用户画像 + es映射+写入数据

06-用户画像 + es映射+写入数据

2024/11/30 9:00:29 来源:https://blog.csdn.net/weixin_46567476/article/details/140663593  浏览:    关键词:06-用户画像 + es映射+写入数据

es映射

创建用映射表

外部表删除时不会删除行数据,只删除元数据
内部表数据会全部删除
一下创建的是外部表

-- 创建映射表,指向es
create external table db_ods.es_users(id int,username string,gender string
)stored by 'org.elasticsearch.hadoop.hive.EsStorageHandler'
tblproperties('es.nodes' = '192.168.88.166:9200','es.index.auto.create' = 'true','es.resource' = 'es_users','es.mapping.name' = 'id:id,username:username,gender:gender','es.index.refresh_interval' = '-1','es.index.number_of_replicas' = '0');

启动es服务
su es
cd
elasticsearch -d

将数据映射到es

-- 将数据写入es中,会在es上创建一个es.resource指定索引库
-- into 追加
-- overwrite 是覆盖
-- 向映射表中插入数据
insert into db_ods.es_users select id,username,gender from db_ods.tbl_users;

或者cd 到当前目录下使用下面的命令运行

hive -f sql文件

es 语法:

语法格式

  • es.nodes 表示es的节点,多个用“,”分开;
  • es.index.auto.create 表示如果索引不存在自动创建;
  • es.index.number_of_replicas 表示指定副本分片存储的数量 0-副本不存数据
  • es.index.refresh_interval 表示内存数据刷新时间-1表示时间不是1s,而是es会根据写入数据情况自己刷新
  • es.resource 表示指定的索引和类型;
  • es.mapping.name 表示其他字段的对应(可以不写,插入时按顺序依次对应即可);
  • es.batch.write.retry.count 表示数据写入失败时重试次数
  • es.batch.write.retry.wait 表示数据写入重试等待时间

向es中写入数据

from pyspark.sql import SparkSessionss = SparkSession.builder.getOrCreate()df = ss.createDataFrame([[1,'张三22222',20,'男']],schema='id int,name string,age int,gender string')
df.show()# 将数据写入es
options={'es.nodes':'192.168.88.166:9200','es.resource':'tf_tb_user','es.mapping.id':'id','es.write.operation':'upsert', # 配合mapping一起使用
}
# mode指定写入模式
df.write.save(format='es',**options,mode='append')

语法格式:
df.write.format(‘es’)
.option(‘es.nodes’, ‘up01:9200’)
.option(‘es.resource’, ‘tfec_tbl_users_test02’)
.option(‘es.mapping.id’, ‘id’)
.option(‘es.write.operation’, ‘upsert’)
.mode(‘append’)
.save()

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com