java - SQL错误:java.io.IOException:java.lang.IllegalArgumentException:bucketId超出范围:-1

标签 java apache-spark hadoop hive

我正在将spark表导入到配置单元中:

df.createOrReplaceTempView(table_name);
df = spark.sql("SELECT * FROM "+ table_name);

df.write().format("orc").mode("overwrite").saveAsTable(db_name+"."+table_name);
表格创建成功,但是当我从表格上的 hive 执行选择查询时,出现以下错误,结果列为空
Error: java.io.IOException: java.lang.IllegalArgumentException: bucketId out of range: -1 (state=,code=0)
我从这里阅读Table loaded through Spark not accessible in Hive,并尝试使用hive-warehouse-connector
按照此链接https://docs.cloudera.com/runtime/7.2.2/integrating-hive-and-bi/topics/hive-etl-example.html,但从 hive 打开表时仍然出现相同的错误。
我已经尝试了很多,但是我不知道为什么会出现此错误。谁能解释我的问题是什么,或者是否有办法避免这种导致我出错的麻烦?
我正在使用Spark 2.3.1和Hive 3(第二次尝试使用hive-warehouse-connector_2.11-1.0.0.7.1.4.0-203)
任何帮助,感激不尽!
更新
使用 hive 仓库连接器(hwc),我可以编写,但前提是已经创建了表。
但是在阅读文档时,他们说它将自动创建表。就我而言,这没有发生。我已经尝试了所有saveMode(“overwrite”,“append” .. ecc)
用法:
HiveWarehouseSession hive = HiveWarehouseSession
                .session(spark)
                .userPassword(username, password)
                .build();
hive.setDatabase(db_name);

df.write()
          .format(HiveWarehouseSession.HIVE_WAREHOUSE_CONNECTOR)
          .option("table", table_name)
          .mode("overwrite")
          .save();

最佳答案

也许在创建表时可以尝试使用STORED AS textfile

关于java - SQL错误:java.io.IOException:java.lang.IllegalArgumentException:bucketId超出范围:-1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64670033/

相关文章:

R:用序列化对象创建 CSV

Java程序找到字符串中出现次数最多的字符?

hadoop - Apache Spark : NPE during restoring state from checkpoint

java - SPARK 驱动程序在读取多个 S3 文件时内存不足

sorting - 在 Hadoop2 中进行基准排序时出错 - 分区不匹配

json - hive 从JSON错误

java - Netbeans javac 命令

java - 同名的类/接口(interface)已存在: SQLException and sqlException

java - zip4j ZipFile getInputStream 始终返回大小为 1 的字节数组

docker - Spark kubernetes 客户端模式(单独的驱动程序pod)设置