Spark.saveAsTable读不到Hive动态增加字段

当使用Spark动态增加Hive字段并写入数据时,导致Hive和Impala元数据不一致,影响数据同步。初步解决方案涉及查找和更新Hive元数据表,而最终解决方案是通过删除特定元数据字段并指定`format="hive"`来解决字段丢失问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述

  在程序中使用alter方式动态增加Hive的字段,但是Hive字段增加之后,使用Spark向Hive写数据,此时修改了Hive元数据表中的table属性,使得Hive和Impala两边的元数据不一致,然后新增的数据 就没有办法同步到Impala中。

初步解决方案

在服务器中通过 hive-site.xml Hive配置,找到元数据的存储地址。

<!-- ConnectionUserName 是元数据存储的实例的用户名 -->
<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value
scala> import org.apache.spark.sql.SaveMode import org.apache.spark.sql.SaveMode scala> scala> val data_new = spark.sqlContext.read.table("ad_traffic.case_data_sample").drop("mac").drop("creativeid").drop("mobile_os").drop("mobile_type").drop("app_key_md5").drop("app_name_md5").drop("os_type") data_new: org.apache.spark.sql.DataFrame = [rank: int, dt: int ... 13 more fields] scala> scala> data_new.write.mode(SaveMode.Overwrite).saveAsTable("ad_traffic.case_data_sample_new") 25/06/19 16:56:18 INFO SQLStdHiveAccessController: Created SQLStdHiveAccessController for session context : HiveAuthzSessionContext [sessionString=89a732c1-8cbd-46c2-b098-a685b1902353, clientType=HIVECLI] 25/06/19 16:56:18 WARN SessionState: METASTORE_FILTER_HOOK will be ignored, since hive.security.authorization.manager is set to instance of HiveAuthorizerFactory. 25/06/19 16:56:18 INFO metastore: Mestastore configuration hive.metastore.filter.hook changed from org.apache.hadoop.hive.metastore.DefaultMetaStoreFilterHookImpl to org.apache.hadoop.hive.ql.security.authorization.plugin.AuthorizationMetaStoreFilterHook 25/06/19 16:56:18 INFO metastore: Closed a connection to metastore, current connections: 0 25/06/19 16:56:18 INFO metastore: Trying to connect to metastore with URI thrift://master1:9083 25/06/19 16:56:18 INFO metastore: Opened a connection to metastore, current connections: 1 25/06/19 16:56:18 INFO metastore: Connected to metastore. 25/06/19 16:56:18 INFO metastore: Trying to connect to metastore with URI thrift://master1:9083 25/06/19 16:56:18 INFO metastore: Opened a connection to metastore, current connections: 2 25/06/19 16:56:18 INFO metastore: Connected to metastore. scala> select * from ad_traffic.case_data_sample_new limit 3; <console>:1: error: ';' expected but '.' found. select * from ad_traffic.case_data_sample_new limit 3
最新发布
06-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值