无法在 Spark 中读取 ORC 事务表。查看空数据帧



我们有一个具有ORC文件格式和ZLiB压缩的事务表。这是一个内部表。通过Hive CLI阅读时,我可以读取该表。但是当运行通过火花SQL选择时,它会显示包含所有列和0行的表。请帮忙。

这也可以使用 Pyspark来实现,但您必须向其添加一些配置,下面是在 Pyspark 中执行相同操作的代码示例

from pyspark.sql import  *
from pyspark_llap import HiveWarehouseSession
from pyspark.sql import SparkSession
from pyspark.sql.rdd.RDD
from pyspark.sql.types import *
from pyspark.sql import Window
from pyspark.sql.functions import *
from pyspark.sql.functions import *
spark = SparkSession.builder 
.appName("appname") 
.enableHiveSupport() 
.getOrCreate()
hive = HiveWarehouseSession.session(spark).build()
sample = hive.executeQuery("""select * from <schema.tablename>""")
sample.show()`

要使用 Spark-submit 执行上述操作,请按如下方式添加配置

spark-submit --jars/usr/hdp/3.1.0.0-78/hive_warehouse_connector/hive-warehouse-connector-assembly-1.0.0.3.1.0.0-78

.jar --py-files/usr/hdp/current/hive_warehouse_connector/pyspark_hwc-1.0.0.3.1.0.0-78.zip --conf spark.sql.hive.hiveserver2.jdbc.url="jdbc URL;serviceDiscoveryMode=zooKeeperHA;zooKeeperNamespace=hs2ActivePassiveHA" --conf spark.hadoop.hive.llap.daemon.service.hosts="@llap0" --conf spark.datasource.hive.warehouse.load.staging.dir="/tmp" --conf spark.hadoop.hive.zookeeper.quorum="all zookeeper urls" --conf spark.sql.hive.hiveserver2.jdbc.url.principal="url for JDBC connection" --conf spark.security.credentials.hiveserver2.enabled="true" TestPysparkJob.py

这可以使用Hive Ware Connector在scala Spark中完成(我正在使用Hortonworks(。 使用的罐子是"蜂巢仓库-connector_2.11-1.0.0.3.1.0.0-78.jar"。

示例代码:

import com.hortonworks.hwc.HiveWarehouseSession
import com.hortonworks.spark.sql.hive.llap.HiveWarehouseBuilder
val conf = new SparkConf()
val spark = SparkSession.builder().appName(AppName).enableHiveSupport().getOrCreate()
spark.conf.set("spark.sql.hive.hiveserver2.jdbc.url","//your hive url")
val hive = HiveWarehouseBuilder.session(spark).build()
val res = hive.table("db.tablename")
res.show(20,False)

最新更新