2017-10-18 2 views
0

나는 스파크 실 클러스터 환경을 설정하고 불꽃 쉘 스파크-SQL을 시도해보십시오 언급saveAsTable 끝

spark-shell --master yarn --deploy-mode client --conf spark.yarn.archive=hdfs://hadoop_273_namenode_ip:namenode_port/spark-archive.zip 

한 가지 인 불꽃에서 Windows가 실행

scala> val sqlContext = new org.apache.spark.sql.SQLContext(sc) 
scala> val df_mysql_address = sqlContext.read.format("jdbc").option("url", "jdbc:mysql://mysql_db_ip/db").option("driver", "com.mysql.jdbc.Driver").option("dbtable", "ADDRESS").option("user", "root").option("password", "root").load() 
scala> df_mysql_address.show 
scala> df_mysql_address.write.format("parquet").saveAsTable("address_local") 

"쇼"명령이 리턴이 제대로-결과 집합,하지만 "saveAsTable는"실패로 끝나는 : 스파크 쉘이 성공적으로 시작 7. 후, 나는 다음과 같이 명령을 실행합니다. 오류 메시지가 말한다 : /jshen.workspace/programs/spark-2.2.0- :

java.io.IOException: Mkdirs failed to create file:/C:/jshen.workspace/programs/spark-2.2.0-bin-hadoop2.7/spark-warehouse/address_local/_temporary/0/_temporary/attempt_20171018104423_0001_m_000000_0 (exists=false, cwd=file:/tmp/hadoop/nm-local-dir/usercache/hduser/appcache/application_1508319604173_0005/container_1508319604173_0005_01_000003) 

내가 기대와 테이블이 하둡 클러스터에 저장하는 것 같다,하지만 당신이 볼 수있는 디렉토리 (C 그 bin-hadoop2.7/spark-warehouse)은 내 Windows 7의 폴더이며 hdfs가 아니라 hadoop 우분투 시스템의 폴더입니다.

어떻게하면됩니까? 고마워, 고마워.

scala> df_mysql_address.write.option("path", "/spark-warehouse").format("parquet").saveAsTable("address_l‌​ocal") 

감사를 @philantrovert : 아래 그림과 같이 문제를 제거하는

+1

saveAsTable에 HDFS의 절대 경로를 입력 해 보았습니까? 'saveAsTable ("hdfs : // nn1/user/cloudera/address_local")와 비슷합니다. 12. – philantrovert

+0

당신의 제안에 영감을 받아 @philantrovert에게 감사드립니다. _ "save"_ 작업 전에 _ "path"_ 옵션을 제공하는 올바른 방법을 찾았습니다. _scala> df_mysql_address.write..option ("path", "/ spark-warehouse") .format ("parquet"). saveAsTable ("address_local") _ –

답변

0

방법은 "경로", "저장"하기 전에 옵션 동작을 제공하는 것입니다.