将一个具有12个嵌套级别的json文件读入azure hdinsights中的配置单元

xoshrz7s  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(522)


我尝试手动为json文件创建一个模式,并尝试创建一个配置单元表,我得到的列类型名长度10888超过了允许的最大长度2000。
我猜我必须更改metastore的详细信息,但我不确定配置在azurehdinsights中的位置。
我尝试的另一种方法是从spark dataframe获取模式,并尝试从视图创建表,但仍然得到相同的错误。
这是我在spark中尝试的步骤

val tne1 = sc.wholeTextFiles("wasb:path").map(x=>x._2)
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
val tne2 = sqlContext.read.json(tne1)   
tne2.createOrReplaceTempView("my_temp_table");
sqlContext.sql("create table s  ROW FORMAT SERDE  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' WITH SERDEPROPERTIES (  'hive.serialization.extend.nesting.levels'='true') as select * from my_temp_table")

我在这一步中得到了错误
org.apache.spark.sql.analysisexception:org.apache.hadoop.hive.ql.metadata.hiveexception:无效对象异常(message:invalid column 类型名长度5448超过了允许的最大长度2000,类型结构
当我试图持久化或创建rdd时,我得到了一个格式化视图中的模式。即使我得到了完整的视图,我也可以提取模式。

x7rlezfr

x7rlezfr1#

我通过ambari>hive>configs>advanced>custom-hive-site添加了以下属性:hive.metastore.max.typename.length=14000。现在我可以创建列类型名称长度高达14000的表

相关问题