在Hive中改变了列,在Spark SQL结果中显示为空值

0?人关注

我需要改变Hive中的一个列名,所以我用下面的查询做了这个。改动后,我可以在hive中看到 "select columnnm1 from tablename "的结果。

alter table tablename change columnnm1 columnnm2 string;

但当我试图执行select columnnm2 from spark.sql时,我得到的是NULL值,而我在hive中可以看到有效的值。

这是个管理表。我试着刷新了火花元数据,但还是没有成功。目前,我正在删除旧表,然后用正确的列名创建新的蜂巢表。但是如何处理这个ALTER方案呢?

spark.catalog.refreshTable("<tablename>")

谢谢你。

8?个评论
你好,欢迎来到SO。你能否提供你在spark.sql中使用的确切命令?另外,你是否尝试过。spark.table?其结果是否相同?
嗨 @pythonic833 df=spark.sql("select columnm1 from tablename")。所以在改变蜂巢表之前,我可以看到df.show()的有效值。在改变蜂巢表后,当我执行df1=spark.sql("select columnm2 from tablename")时,我得到了空值。 df1.show() spark.table? 你能告诉我如何执行该命令吗,我会尝试的
df=spark.table(<table_name>).也请你执行df1.printSchema() ,并将结果贴在这里。
相同的输出。
会不会是,你把表中的值都改成了字符串,实际上是把所有的值都转换成了空值?
请提供df1.printSchema() 的结果和显示show creat table <table_name> 的结果,从蜂巢。
旧的数据类型在hive中也是String。在改变了列名后,我可以在Hue中看到有效的值。df.printSchema()也给出了正确的数据类型为String,但值仍为Null。
显示 创建表tablame CREATE TABLE 'tablame'( ... coulmnnm1 string, ...) ROW FORMAT SERDE OrcSerde TBLPROPERTIES( 'spark.sql.sources.schema.part.0='{"类型": "结构", "字段":[{"名称": "coulmnnm1", "类型":字符串", "nullable":true, "metadat":{}}] df1.printSchema() root |-- columnnm1 : string(nullable=true)
apache-spark
pyspark
hive
apache-spark-sql
pcbzmani
pcbzmani
发布于?2021-06-04

推荐产品

云服务器_QVM_云主机

云服务器_QVM_云主机

便宜云服务器 QVM 以云服务器为核心,提供含云硬盘、云数据库、高防、负载均衡等解决方案为一体的云计算综合服务。
CDN_内容分发网络

CDN_内容分发网络

七牛 CDN 提供稳定快速的网络访问服务。保障您的音视频点播、大文件下载、应用及 Web 加速服务的稳定及连续性。
云存储_对象存储

云存储_对象存储

便宜云服务器对象存储系统 kodo 支持中心和边缘存储,经过多年大规模用户验证已跻身先进技术行列,并广泛应用于海量数据管理的各类场景。
实时音视频通信_RTC

实时音视频通信_RTC

七牛实时音视频云为您提供一站式解决方案,零基础搭建音视频平台,快速支持视频通话、多人会议、互动直播、语音聊天室等多种业务场景。
页面原文内容由 pcbzmani、pythonic833 等提供。便宜云服务器提供翻译支持。
如您不希望该内容被发布至本网站,请发送邮件至:ug#qiniu.com(邮箱中 # 请改为 @)进行申诉,一经确认,我们将立即删除该内容。
http://www.vxiaotou.com