pysparkを使用しています。Spark 2.1以降であれば、スキーマ定義を行った後にJsonファイルを読み込むことができます。


例1
test01.json

{
 "_id":"2d3erf5",
 "testNo":"0001",
 "Date":"2017-09-01 00:00:00.00000"
}

test01.py

from pyspark.sql import SparkSession
from pyspark.sql.types import *

spark = SparkSession.builder.appName('Spark SQL and DataFrame').getOrCreate()


testColumn = StructType([
  StructField('_id', StringType(), False),
  StructField('testNo', IntegerType(), False),
  StructField('Date', TimestampType(), False)
])
readFile = '/tmp/test01.json'
test_df = spark.read.json(readFile, schema=testColumn)

今回、ネストされているJsonファイルを読み込む必要があるのですが、どう記述すればよろしいのでしょうか?


例2
test02.json

{
  "_id":"2d3erf5",
  "testNo":"0001",
  "test_date"{
              "date_1":"2017-09-01 00:00:00.00000",
              "date_2":"2017-09-05 03:00:00.00000"
             }
}

以下のような感じに記述するのかなとは、思っていますが、どなたかご教授願います。

test02.py

from pyspark.sql import SparkSession
from pyspark.sql.types import *

spark = SparkSession.builder.appName('Spark SQL and DataFrame').getOrCreate() 


testColumn = StructType([
  StructField('_id', StringType(), False),
  StructField('testNo', IntegerType(), False),
  StructField('test_date.date_1', TimestampType(), False),
  StructField('test_date.date_2', TimestampType(), False),
])
readFile = '/tmp/test02.json'
test_df = spark.read.json(readFile, schema=testColumn)