使用json中的嵌套数据创建一个表并将其附加到DataRicks

2024-06-13 00:21:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在生成一系列嵌套在json中的数据,并希望将这些文件自动附加到DataRicks中的表中。我没有她的计划。。。此数据将进入azure存储

%python
# !/usr/bin/python
# -*- coding: utf-8 -*-

from pyspark.sql import SparkSession
from pyspark.sql.functions import *
import sys
import json
import os
import pandas as pd

def create_table():
    qry = """
    CREATE TEMPORARY TABLE vsts 
    USING json
    OPTIONS (path 'dbfs:/mnt/lake/vsts/*.json')
    """
    return spark.sql(qry)

if __name__ == "__main__":
    create_table()

我试图创建一个临时表,然后将新数据放入一个永久表中,但这个过程不起作用。基本上,我需要插入数百个文件,这些文件将使用嵌套在单个表中的数据创建

from pyspark.sql import SparkSession
from pyspark.sql.functions import *
import sys
import json
import os

def get_clear_default():
    qry_default = """
    select * from vsts
    """
    return spark.sql(qry_default)

def create_table():
    qry = """
    CREATE TABLE IF NOT EXISTS `db_sandbox`.`tst_vsts` 
    USING JSON
    OPTIONS (
    path 'dbfs:/mnt/lake/vsts/*.json'
    )
    """
    return spark.sql(qry)

if __name__ == "__main__":
    create_table()

Tags: 文件数据fromimportjsondefaultsqlreturn
1条回答
网友
1楼 · 发布于 2024-06-13 00:21:59

我们可以试试这条路线

df=spark.read.option("multiline", "true").json("<Azure_Path>")

df.createOrReplaceTempView("test")

然后,您可以开始在Spark SQL集合中使用这个“测试”表来创建表

如果您想拆分嵌套JSON中的元素数组,请尝试POS Explode将它们反规范化到表中

        spark.sql("SELECT \
              n.pos AS position, \
              n.<unique_field> AS <unique_field>, \
              <field1>[pos] AS <field1>, \
              <field2>[pos] AS <field2>, \
              <field3>[pos] AS <field3>\
       FROM \
              test \
       LATERAL VIEW POSEXPLODE(<parent_field>.<unique_field>) n AS pos, <unique_field>").show()

相关问题 更多 >