gpt4 book ai didi

scala - 无法从HDP 3中具有超过25列的Spark数据框中加载配置单元表

转载 作者:行者123 更新时间:2023-12-02 20:17:23 25 4
gpt4 key购买 nike

我们试图从Spark Shell中填充 hive 表。使用配置单元仓库连接器已将具有25列的数据框成功添加到配置单元表中。但是对于超过这个限制,我们得到以下错误:

Caused by: java.lang.IllegalArgumentException: Missing required char ':' at 'struct<_c0:string,_c1:string,_c2:string,_c3:string,_c4:string,_c5:string,_c6:string,_c7:string,_c8:string,_c9:string,_c10:string,_c11:string,_c12:string,_c13:string,_c14:string,_c15:string,_c16:string,_c17:string,_c18:string,_c19:string,_c20:string,_c21:string,_c22:string,_c23:string,...^ 2 more fields>'
at org.apache.orc.TypeDescription.requireChar(TypeDescription.java:293)
以下是样本输入文件数据(输入文件的类型为csv)。
|col1                |col2 |col3 |col4               |col5    |col6           |col7       |col8    |col9    |col10   |col11   |col12   |col13   |col14   |col15   |col16 |col17|col18                                        |col19   |col20  |col21    |col22    |col23    |col24                               |col25|col26     |
|--------------------|-----|-----|-------------------|--------|---------------|-----------|--------|--------|--------|--------|--------|--------|--------|--------|------|-----|---------------------------------------------|--------|-------|---------|---------|---------|------------------------------------|-----|----------|
|11111100000000000000|CID81|DID72|2015-08-31 00:17:00|null_val|919122222222222|1627298243 |null_val|null_val|null_val|null_val|null_val|null_val|Download|null_val|Mobile|NA |x-nid:xyz<-ch-nid->N4444.245881.ABC-119490111|12452524|1586949|sometext |sometext |sometext1|8b8d94af-5407-42fa-9c4f-baaa618377c8|Click|2015-08-31|
|22222200000000000000|CID82|DID73|2015-08-31 00:57:00|null_val|919122222222222|73171145211|null_val|null_val|null_val|null_val|null_val|null_val|Download|null_val|Tablet|NA |x-nid:xyz<-ch-nid->N4444.245881.ABC-119490111|12452530|1586956|88200211 |88200211 |sometext2|9b04580d-1669-4eb3-a5b0-4d9cec422f93|Click|2015-08-31|
|33333300000000000000|CID83|DID74|2015-08-31 00:17:00|null_val|919122222222222|73171145211|null_val|null_val|null_val|null_val|null_val|null_val|Download|null_val|Laptop|NA |x-nid:xyz<-ch-nid->N4444.245881.ABC-119490111|12452533|1586952|sometext2|sometext2|sometext3|3ab8511d-6f85-4e1f-8b11-a1d9b159f22f|Click|2015-08-31|
使用以下命令实例化Spark Shell:
spark-shell --jars /usr/hdp/current/hive_warehouse_connector/hive-warehouse-connector-assembly-1.0.0.3.0.1.0-187.jar --conf spark.hadoop.metastore.catalog.default=hive --conf spark.sql.hive.hiveserver2.jdbc.url="jdbc:hive2://sandbox-hdp.hortonworks.com:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;user=raj_ops"
HDP的版本是3.0.1
配置单元表是使用以下命令创建的:
val hive = com.hortonworks.spark.sql.hive.llap.HiveWarehouseBuilder.session(spark).build()

hive.createTable("tablename").ifNotExists().column()...create()

使用以下命令保存数据:
df.write.format("com.hortonworks.spark.sql.hive.llap.HiveWarehouseConnector").option("table", "tablename").mode("append").save()
请帮助我们。
先感谢您。

最佳答案

在彻底检查以下类的源代码之后,我遇到了这个问题:

  • org.apache.orc.Type描述
  • org.apache.spark.sql.types.StructType
  • org.apache.spark.util.Utils

  • 我发现罪魁祸首是 DEFAULT_MAX_TO_STRING_FIELDS 类中的 org.apache.spark.util.Utils变量: /* The performance overhead of creating and logging strings for wide schemas can be large. To limit the impact, we bound the number of fields to include by default. This can be overridden by setting the 'spark.debug.maxToStringFields' conf in SparkEnv. */ val DEFAULT_MAX_TO_STRING_FIELDS = 25
    因此,设置此属性后,例如:conf.set(“spark.debug.maxToStringFields”,“128”);在我的应用程序中,问题已消失。
    我希望它可以帮助其他人。

    关于scala - 无法从HDP 3中具有超过25列的Spark数据框中加载配置单元表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62594423/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com