Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Databricks-使用PySpark从SQL列分解JSON_Json_Pyspark_Apache Spark Sql_Pyspark Sql_Azure Databricks - Fatal编程技术网

Databricks-使用PySpark从SQL列分解JSON

Databricks-使用PySpark从SQL列分解JSON,json,pyspark,apache-spark-sql,pyspark-sql,azure-databricks,Json,Pyspark,Apache Spark Sql,Pyspark Sql,Azure Databricks,Databricks的新成员。有一个SQL数据库表,我从中创建数据帧。其中一列是JSON字符串。我需要将嵌套的JSON分解为多列。用这个和这个把我带到我现在的位置 JSON示例: { “模块”:{ “PCBA序列号”:“G7456789”, “制造代号”:“迪士尼”, “固件版本”:“0.0.0”, “硬件版本”:“46858”, “制造日期”:“2018年10月17日下午4:04:25”, “测试结果”:“失败”, “测试开始时间”:“2018年10月22日上午6:14:14”, “测试结束时

Databricks的新成员。有一个SQL数据库表,我从中创建数据帧。其中一列是JSON字符串。我需要将嵌套的JSON分解为多列。用这个和这个把我带到我现在的位置

JSON示例:

{
“模块”:{
“PCBA序列号”:“G7456789”,
“制造代号”:“迪士尼”,
“固件版本”:“0.0.0”,
“硬件版本”:“46858”,
“制造日期”:“2018年10月17日下午4:04:25”,
“测试结果”:“失败”,
“测试开始时间”:“2018年10月22日上午6:14:14”,
“测试结束时间”:“2018年10月22日上午6:16:11”
}

迄今为止的代码:

    #define schema 
         schema = StructType(
          [
            StructField('Module',ArrayType(StructType(Seq
              StructField('PCBA Serial Number',StringType,True),
              StructField('Manufacturing Designator',StringType,True),
              StructField('Firmware Version',StringType,True),
              StructField('Hardware Revision',StringType,True),
              StructField('Test Result',StringType,True),
              StructField('Test Start Time',StringType,True),
              StructField('Test End Time',StringType,True))), True) ,True),
            StructField('Test Results',StringType(),True),
            StructField('HVM Code Errors',StringType(),True)
          ]

#use from_json to explode json by applying it to column
        df.withColumn("ActivityName", from_json("ActivityName", schema))\
            .select(col('ActivityName'))\
            .show()
错误:

    SyntaxError: invalid syntax
  File "<command-1632344621139040>", line 10
    StructField('PCBA Serial Number',StringType,True),
              ^
SyntaxError: invalid syntax
SyntaxError:无效语法
文件“”,第10行
StructField('PCBA序列号',StringType,True),
^
SyntaxError:无效语法

当您使用pyspark时,类型应该是
StringType()
而不是
StringType
并删除
Seq
将其替换为
[]

schema = StructType([StructField('Module',ArrayType(StructType([
    StructField('PCBA Serial Number',StringType(),True),
    StructField('Manufacturing Designator',StringType(),True),
    StructField('Firmware Version',StringType(),True),
    StructField('Hardware Revision',StringType(),True),
    StructField('Test Result',StringType(),True),
    StructField('Test Start Time',StringType(),True),
    StructField('Test End Time',StringType(),True)])), True),
StructField('Test Results',StringType(),True),
StructField('HVM Code Errors',StringType(),True)])

@N.Fisher,答案有用吗?这确实有用!我混淆了Scala和Python之间的语法切换