web-dev-qa-db-ja.com

Sparkから書かれたPySparkの寄木細工を読むにはどうすればよいですか?

2つのJupyterノートブックを使用して、分析で異なることを実行しています。私のScalaノートブックには、寄せ集めにクリーニングしたデータの一部を書きます。

partitionedDF.select("noStopWords","lowerText","prediction").write.save("Swift2d://xxxx.keystone/commentClusters.parquet")

次にPythonノートブックにアクセスして、データを読み取ります。

df = spark.read.load("Swift2d://xxxx.keystone/commentClusters.parquet")

そして、次のエラーが表示されます。

AnalysisException: u'Unable to infer schema for ParquetFormat at Swift2d://RedditTextAnalysis.keystone/commentClusters.parquet. It must be specified manually;'

sparkのドキュメントを見てきましたが、スキーマを指定する必要はないと思います。誰かがこのようなものに遭遇しましたか?保存/ロードするときに別のことをする必要がありますか?データはObject Storageに到着しています。

編集:私は読み取りと書き込みの両方でspark 2.0を歌っています。

edit2:これは、Data Science Experienceのプロジェクトで行われました。

24
Ross Lewis

私は寄木細工のファイルを次のように読みました:

from pyspark.sql import SparkSession
# initialise sparkContext
spark = SparkSession.builder \
    .master('local') \
    .appName('myAppName') \
    .config('spark.executor.memory', '5gb') \
    .config("spark.cores.max", "6") \
    .getOrCreate()

sc = spark.sparkContext

# using SQLContext to read parquet file
from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)

# to read parquet file
df = sqlContext.read.parquet('path-to-file/commentClusters.parquet')
32
Jeril

Spark Sessionのparquet形式を使用して、寄せ木細工のファイルを読み取ることができます。このような:

df = spark.read.parquet("Swift2d://xxxx.keystone/commentClusters.parquet")

ただし、parquet関数とload関数の間に違いはありません。 loadがファイル内のデータのスキーマを推測できない場合があります(たとえば、loadで識別できない、またはparquetに固有のデータ型)。

11
himanshuIIITian