2016-10-10 84 views
2

我是Apache Spark中的初學者,所以請原諒,如果這很簡單。Spark Shell導入正常,但在引用類時引發錯誤

基本上,我是跑在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.apa‌​che.hadoop.io.NullWritable; 
... 

val rdd = sc.hadoopFile(path, 
    classOf[org.apache.hadoop.hive.ql.io.orc.OrcInputFor‌​mat], 
    classOf[NullWritable], 
    classOf[OrcStruct], 
    1) 

import語句截至OrcInputFormat正常工作,不同之處在於:

error: object apa‌​che is not a member of package org import org.apa‌​che.hadoop.io.NullWritable;

這沒有意義,如果之前的導入聲明沒有發生任何問題。

此外,引用OrcInputFormat的時候,有人告訴我:

error: type OrcInputFor‌​mat is not a member of package org.apache.hadoop.hive.ql.io.orc

看來奇怪的是,進口爲OrcInputFormat工作(我假設它的作品,因爲不會引發錯誤),但隨後上述錯誤消息出現。基本上,我正在嘗試從S3讀取ORC文件。

我也在看我做錯了什麼,以及爲什麼發生這種情況。

我做了什麼:

  1. 我曾試圖與--jars選項運行spark-shell,並試圖導入hadoop-common-2.6.0.jar(我現在的星火版本是1.6.1,用Hadoop 2.6編譯)
  2. Read ORC files directly from Spark shell)引用的val df = sqlContext.read.format("orc").load(PathToS3)。我嘗試過S3,S3n,S3a的變種,沒有任何成功。

回答

1

你有org.apeche之間的2個非打印字符在過去的進口,肯定由於複製粘貼:

import org.apa‌​che.hadoop.io.NullWritable; 

就重寫了最後import語句,它會工作。你也不需要這些分號。

你有同樣的問題與OrcInputFormat:

error: type OrcInputFor‌​mat is not member of package org.apache.hadoop.hive.ql.io.orc 

這很有趣,在#1的移動版本,我們可以看到中邦的非打印字符:

enter image description here

+0

謝謝!這是一個相當偷偷摸摸的...雖然這似乎並沒有解決'錯誤:類型OrcInputFor mat不是包org.apache.hadoop.hive.ql.io.orc'的成員,不幸... – Stanley

+0

請參閱我的更新,相同的問題和解決方案!請接受/投票我的答案,如果它幫助你,謝謝 – cheseaux

相關問題