读取pyspark中配置单元管理表的orc文件

e4yzc0pl  于 2021-05-27  发布在  Hadoop
关注(0)|答案(2)|浏览(546)

我正在尝试使用下面的pyspark代码读取托管配置单元表的orc文件。

  1. spark.read.format('orc').load('hive managed table path')

当我对获取的Dataframe执行打印模式时,如下所示

  1. root
  2. |-- operation: integer (nullable = true)
  3. |-- originalTransaction: long (nullable = true)
  4. |-- bucket: integer (nullable = true)
  5. |-- rowId: long (nullable = true)
  6. |-- currentTransaction: long (nullable = true)
  7. |-- row: struct (nullable = true)
  8. | |-- col1: float (nullable = true)
  9. | |-- col2: integer (nullable = true)
  10. |-- partition_by_column: date (nullable = true)

现在我无法解析这些数据,也无法对Dataframe进行任何操作。在应用show()这样的操作时,我得到一个错误

  1. java.lang.IllegalArgumentException: Include vector the wrong length

有人面临同样的问题吗?如果是,请您建议如何解决。

lg40wkob

lg40wkob1#

由于我不确定的版本,你可以尝试其他方式加载orc文件。
使用sqlcontext

  1. val df = sqlContext.read.format("orc").load(orcfile)

或者

  1. val df= spark.read.option("inferSchema", true).orc("filepath")

或sparksql(推荐)

  1. import spark.sql
  2. sql("SELECT * FROM table_name").show()
jfgube3f

jfgube3f2#

这是一个众所周知的问题。
你得到那个错误是因为你在试着阅读 Hive ACID 但是spark仍然不支持这个。
也许你可以把你的Hive表导出到普通的 ORC 然后用spark读取文件,或者尝试使用类似的替代方法 Hive JDBC 如本文所述

相关问题