我是Apache Spark的初学者,所以如果这非常简单,请原谅。
基本上,我在spark-shell
中运行了以下导入:
import org.apache.spark.sql.{DataFrame, Row, SQLContext, DataFrameReader}
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql._
import org.apache.hadoop.hive.ql.io.orc.{OrcInputFormat,OrcStruct};
import org.apache.hadoop.io.NullWritable;
...
val rdd = sc.hadoopFile(path,
classOf[org.apache.hadoop.hive.ql.io.orc.OrcInputFormat],
classOf[NullWritable],
classOf[OrcStruct],
1)
直到OrcInputFormat的导入语句工作正常,但例外:
error: object apache is not a member of package org
import org.apache.hadoop.io.NullWritable;
如果之前的import语句没有任何问题,那就没有意义了。
此外,在引用OrcInputFormat
时,我被告知:
error: type OrcInputFormat is not a member of package org.apache.hadoop.hive.ql.io.orc
导入OrcInputFormat
似乎很奇怪(我认为它有效,因为没有抛出错误),但随后出现上述错误消息。基本上,我试图从S3中读取ORC文件。
我也在看我做错了什么,以及为什么会这样。
我做了什么:
spark-shell
选项运行--jars
,并尝试导入hadoop-common-2.6.0.jar
(我当前版本的Spark是1.6.1,使用Hadoop 2.6编译)val df = sqlContext.read.format("orc").load(PathToS3)
,由(Read ORC files directly from Spark shell)引用。我尝试过S3,S3n,S3a的变种,没有任何成功。