2017-12-12 2 views

答えて

0

しばらく見た後、私は、パラメータを使用することができますdocsで見つかった「primitivesAsString」

df = spark.read.json(r's3://mypath/', primitivesAsString='true') 

は、私は、少なくとも推論を禁止することができますこの方法は、プリムタイプの場合しかし、私は配列や構造体のためにそれを避けるつもりはありません。それでも、それは私の作品です。

0

スキーマを推測する代わりに、自分で作成してSparkに使用させることができます。

schema = StructType([StructField('name', StringType(), True), 
        StructField('datetime', TimestampType(), True) 
        StructField('age', IntegerType(), True)]) 

df = spark.read.schema(schema).json(r's3://mypath/') 

これは、JSONファイルの構造を事前に知っている場合にのみ有効です。ただし、構造が異なる複数のファイルがある場合は、同じスキーマで読み込むことで一緒にマージできます。いくつかの列を持たないファイルは単にそれらの値がnullになります。

+0

この問題は、私は何を期待するのか分からない、つまり、私はjsonからの列の名前を知らないということです。 – lfvv

+0

@Ifvv:はい、これは、使用する列が分かっている場合にのみ機能します。関心のある異なる列がjsonファイルに含まれている場合は、すべて同じスキーマで指定できます。欠落している列の場合、値はNULLになります。 – Shaido

関連する問題