从Spark shell直接读取ORC文件

11

我在Spark shell中直接读取ORC文件时遇到了问题。注:运行Hadoop 1.2和Spark 1.2,使用pyspark shell,可以使用spark-shell(运行scala)。

我使用了这个资源http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.2.4/Apache_Spark_Quickstart_v224/content/ch_orc-spark-quickstart.html

from pyspark.sql import HiveContext
hiveCtx = HiveContext(sc)

inputRead = sc.hadoopFile("hdfs://user@server:/file_path",
classOf[inputFormat:org.apache.hadoop.hive.ql.io.orc.OrcInputFormat],
classOf[outputFormat:org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat])

我通常会收到语法错误的提示。有一次,代码似乎可以工作,我只使用了传递给hadoopFile的三个参数中的第一个参数,但是当我尝试使用其他参数时出现了问题。

inputRead.first()

输出结果是RDD[nothing, nothing]。我不知道这是因为inputRead变量没有作为RDD被创建,还是压根没有被创建。

非常感谢任何帮助!


嗨,我是Python的新手,但在Scala中,读取ORC文件的符号将是这样的:sc.hadoopFile(ORC_FILE_PATH,classOf [org.apache.hadoop.hive.ql.io.orc.OrcInputFormat],classOf [org.apache.hadoop.io.NullWritable],classOf [org.apache.hadoop.hive.ql.io.orc.OrcStruct]); 尝试在Python中添加4个参数,就像这样。 - vijay kumar
ORC文件在Spark 1.4中得到了新的支持。因此,您可以使用Spark的最新版本。 - Kaushal
谢谢!我通过HiveContext读取了一个存储为ORC格式的Hive表,并使用dataFrame来处理数据和执行查询。@kaushal,我认为这个问题有一个JIRA记录,但不一定要完全整合到Spark 1.4中(具体情况不太确定)。 - mslick3
3个回答

12
在Spark 1.5中,我可以将我的ORC文件加载为:
val orcfile = "hdfs:///ORC_FILE_PATH"
val df = sqlContext.read.format("orc").load(orcfile)
df.show

如何添加多个路径以进行加载 - ankursingh1000

4

你可以尝试这段代码,它对我有效。

val LoadOrc = spark.read.option("inferSchema", true).orc("filepath")
LoadOrc.show()

1
您可以添加多个路径以进行读取。
val df = sqlContext.read.format("orc").load("hdfs://localhost:8020/user/aks/input1/*","hdfs://localhost:8020/aks/input2/*/part-r-*.orc")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接