2017-12-05 4 views
1

テキストファイルをpyspark RDDに読み込もうとしていますが、sqlContext.read.loadsqlContext.read.textの間に大きな違いがあることに気づいています。sqlContext.read.loadとsqlContext.read.textの違いは何ですか?

s3_single_file_inpath='s3a://bucket-name/file_name' 

indata = sqlContext.read.load(s3_single_file_inpath, format='com.databricks.spark.csv', header='true', inferSchema='false',sep=',') 
indata = sqlContext.read.text(s3_single_file_inpath) 

sqlContext.read.loadコマンドは、上記

Py4JJavaError: An error occurred while calling o227.load. 
: java.lang.ClassNotFoundException: Failed to find data source: com.databricks.spark.csv. Please find packages at http://spark-packages.org 

で失敗しかし、もう一つは成功しますか?

オンラインで見るリソースのすべてがsqlContext.read.load(これにはhttps://spark.apache.org/docs/1.6.1/sql-programming-guide.html)を使用していると言われています。

これらのうちのどれをいつ使用するかは、私には明らかではありません。これらの間に明確な区別がありますか?

+0

_ "大きな違い" _は何ですか?私はあなたの質問のうちの一方が失敗し、他方は失敗することを見ることができます。 –

答えて

2

違いがある:

  • textは、内蔵された入力フォーマットスパーク1.6
  • com.databricks.spark.csv第三者スパークCSVを使用するスパーク1.6

サードパーティのパッケージです( Spark 2.0ではもう必要ありません)spark-csvサイトの指示に従わなければなりません。例えば、

--packages com.databricks:spark-csv_2.10:1.5.0 

引数は​​/pysparkとなります。

を超えてsqlContext.read.formatName(...)は、sqlContext.read.format("formatName")およびsqlContext.read.load(..., format=formatName)の構文砂糖です。

1

sqlContext.read.loadとsqlContext.read.textの違いは何ですか?

sqlContext.read.loadsqlContext.read.texttext形式を想定しながら、データ・ソース・フォーマットとしてparquet前提。

sqlContext.read.loadでは、formatパラメータを使用してデータソース形式を定義できます。

あなたがまたは CSV形式をサポートしているために、外部スパークパッケージをロードしない場合があり 2.xの 対スパーク1.6のバージョンによって

スパーク2.0のとして、あなたは、もはや(official documentationを引用)以来spark-csvスパークパッケージをロードする必要があります。

注:この機能は、Apacheのスパーク2.xの中でインライン化されましたこのパッケージはメンテナンスモードにあり、致命的なバグ修正のみ受け付けます。

これは、あなたがSpark 1.6を使用していたために混乱した理由を説明します。xを使用しており、Sparkパッケージをロードしてcsvをサポートしていません。 https://spark.apache.org/docs/1.6.1/sql-programming-guide.html:私はオンライン参照リソースのすべてはこの1つを含むsqlContext.read.loadを使用するように言うので

は今、私はこれで混乱しています。

https://spark.apache.org/docs/1.6.1/sql-programming-guide.htmlは、spark-csvスパークパッケージがスパークの一部ではない場合、スパーク1.6.1用です。それはSpark 2.0で起こった。


ときに使用するには、これらのどれを使用するとき、それは私には明らかではありません。これらの間に明確な区別がありますか?

実際 IFFあなたはスパーク2.xのを使用して何もありません

あなたはスパーク1.6.xのを使用しかし、もし、spark-csvは(Using with Spark shellで説明したように)--packagesオプションを使用して個別にロードする必要があります。

このパッケージには、--packagesコマンドラインオプションを使用してスパークするために追加することができます。それは内部的に認識していますとして実際のところ、火花シェル


を起動するときにたとえば、それを含めるために、あなたはまだスパーク2.xの中で明示的にcom.databricks.spark.csvフォーマットを使用することができます。

関連する問題