2016-07-31 5 views
2

경로/tmp/home/아래의 로컬 창 HDFS (hdfs : // localhost : 54310)에 CSV 파일이 저장되어 있습니다. 이 파일을 HDFS에서로드하여 Dataframe을 실행하고 싶습니다. 그래서 나는 다음 this스파크 데이터 프레임에 HDFS에서 파일을로드 할 수 없습니다.

val spark = SparkSession.builder.master(masterName).appName(appName).getOrCreate()

val path = "hdfs://localhost:54310/tmp/home/mycsv.csv" 
import sparkSession.implicits._ 

spark.sqlContext.read 
    .format("com.databricks.spark.csv") 
    .option("header", "true") 
    .option("inferSchema", "true") 
    .load(path) 
    .show() 

을 시도하지만 아래의 예외 스택 추적과 런타임에 실패

Caused by: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: file:C:/test/sampleApp/spark-warehouse 
at org.apache.hadoop.fs.Path.initialize(Path.java:205) 
at org.apache.hadoop.fs.Path.<init>(Path.java:171) 
at org.apache.spark.sql.catalyst.catalog.SessionCatalog.makeQualifiedPath(SessionCatalog.scala:114) 
at org.apache.spark.sql.catalyst.catalog.SessionCatalog.createDatabase(SessionCatalog.scala:145) 
at org.apache.spark.sql.catalyst.catalog.SessionCatalog.<init>(SessionCatalog.scala:89) 
at org.apache.spark.sql.internal.SessionState.catalog$lzycompute(SessionState.scala:95) 
at org.apache.spark.sql.internal.SessionState.catalog(SessionState.scala:95) 
at org.apache.spark.sql.internal.SessionState$$anon$1.<init>(SessionState.scala:112) 
at org.apache.spark.sql.internal.SessionState.analyzer$lzycompute(SessionState.scala:112) 
at org.apache.spark.sql.internal.SessionState.analyzer(SessionState.scala:111) 
at org.apache.spark.sql.execution.QueryExecution.assertAnalyzed(QueryExecution.scala:49) 
at org.apache.spark.sql.Dataset$.ofRows(Dataset.scala:64) 
at org.apache.spark.sql.SparkSession.baseRelationToDataFrame(SparkSession.scala:382) 
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:143) 
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:132) 

는 C :/테스트/여기서 SampleApp가/경로 곳이다 내 샘플 프로젝트 거짓말. 하지만 HDFS 경로를 지정했습니다.

또한이 내가 뭔가를 놓친 거지 발견뿐만 아니라 this을 시도했지만 운 :(

val path = "hdfs://localhost:54310/tmp/home/mycsv.csv" 
val sc = SparkContext.getOrCreate() 
val rdd = sc.textFile(path) 
println(rdd.first()) //prints first row of CSV file 

일반 RDD 완벽하게 잘 작동? 스파크 내 로컬 파일 시스템에서 찾고 이유 &하지 HDFS?

내가 스칼라 2.11 하둡 HDFS 2.7.2에 스파크 2.0을 사용하고 있습니다.

EDIT : 단지 하나의 추가 정보 1.6.2로 점프 다운을 시도했습니다. 나는 그것을 가능하게 만들 수 있었다. 그래서 이것이 스파크 2.0의 버그라고 생각합니다.

+0

'/ tmp/home/mycsv.csv'을 사용해보실 수 있습니까? –

+0

@AlbertoBonsanto, org.apache.spark.sql.AnalysisException : 경로가 존재하지 않습니다 : file : /tmp/home/mycsv.csv; 예외가 발생했습니다. – Aiden

+0

'hdfs : //tmp/home/mycsv.csv는 어떨까요? '? –

답변

관련 문제