JSONを持つS3からファイルを読み込みたいユースケースがあります。次に、特定のJSONノードの値に基づいて、データをグループ化してS3に書き出します。Apache SparkでカラムをS3に分割する
データを読み取ることはできますが、JSONキーに基づいてデータをパーティション分割してS3にアップロードする方法についての良い例は見つかりません。誰もがどのような例を提供することができますか、このユースケースで私を助けることができるチュートリアルを教えてください?
私は、データフレームを作成した後、私のデータのスキーマを持っている:
root
|-- customer: struct (nullable = true)
| |-- customerId: string (nullable = true)
|-- experiment: string (nullable = true)
|-- expiryTime: long (nullable = true)
|-- partitionKey: string (nullable = true)
|-- programId: string (nullable = true)
|-- score: double (nullable = true)
|-- startTime: long (nullable = true)
|-- targetSets: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- featured: array (nullable = true)
| | | |-- element: struct (containsNull = true)
| | | | |-- data: struct (nullable = true)
| | | | | |-- asinId: string (nullable = true)
| | | | |-- pk: string (nullable = true)
| | | | |-- type: string (nullable = true)
| | |-- reason: array (nullable = true)
| | | |-- element: string (containsNull = true)
| | |-- recommended: array (nullable = true)
| | | |-- element: string (containsNull = true)
私はCustomerID列にランダムなハッシュに基づいてデータを分割したいです。私はこれを行うときには:
df.write.partitionBy("customerId").save("s3/bucket/location/to/save");
それはエラーを与える:
org.apache.spark.sql.AnalysisException: Partition column customerId not found in schema StructType(StructField(customer,StructType(StructField(customerId,StringType,true)),true), StructField(experiment,StringType,true), StructField(expiryTime,LongType,true), StructField(partitionKey,StringType,true), StructField(programId,StringType,true), StructField(score,DoubleType,true), StructField(startTime,LongType,true), StructField(targetSets,ArrayType(StructType(StructField(featured,ArrayType(StructType(StructField(data,StructType(StructField(asinId,StringType,true)),true), StructField(pk,StringType,true), StructField(type,StringType,true)),true),true), StructField(reason,ArrayType(StringType,true),true), StructField(recommended,ArrayType(StringType,true),true)),true),true));
私はCustomerID列にアクセスすることができます教えてください。