Apache spark 在pyspark中读取配置单元管理表的orc文件
我正在尝试使用下面的pyspark代码读取托管配置单元表的orc文件Apache spark 在pyspark中读取配置单元管理表的orc文件,apache-spark,hadoop,hive,pyspark,Apache Spark,Hadoop,Hive,Pyspark,我正在尝试使用下面的pyspark代码读取托管配置单元表的orc文件 spark.read.format('orc').load('hive managed table path') 当我对获取的数据帧执行打印模式时,如下所示 root |-- operation: integer (nullable = true) |-- originalTransaction: long (nullable = true) |-- bucket: integer (nullable = true)
spark.read.format('orc').load('hive managed table path')
当我对获取的数据帧执行打印模式时,如下所示
root
|-- operation: integer (nullable = true)
|-- originalTransaction: long (nullable = true)
|-- bucket: integer (nullable = true)
|-- rowId: long (nullable = true)
|-- currentTransaction: long (nullable = true)
|-- row: struct (nullable = true)
| |-- col1: float (nullable = true)
| |-- col2: integer (nullable = true)
|-- partition_by_column: date (nullable = true)
现在我无法解析这些数据,也无法对数据帧进行任何操作。在应用show()之类的操作时,我遇到一个错误
java.lang.IllegalArgumentException: Include vector the wrong length
有人面临同样的问题吗?如果是,请您建议如何解决。由于我不确定版本,您可以尝试其他方式加载ORC文件 使用SqlContext
val df = sqlContext.read.format("orc").load(orcfile)
或
或SparkSql(推荐)
这是一个众所周知的问题
您之所以会出现此错误,是因为您试图读取hiveacid
表,但Spark仍然不支持此操作
也许您可以将Hive表导出到普通的
ORC
文件中,然后使用Spark读取它们,或者尝试使用所述的Hive JDBC
等替代方法我已经尝试了上述两种方法,执行操作时出现问题中指定的错误。您使用的是哪个spark版本?spark版本2.3.2.3.1.0.0-78python版本2.7.5select(df.row.col1)
?在这种情况下,我想您可以使用它来展平它。我尝试了df.select(“row.col1”).show(),得到了相同的错误
val df= spark.read.option("inferSchema", true).orc("filepath")
import spark.sql
sql("SELECT * FROM table_name").show()