【问题标题】:Create and append a table to databricks using nested data from json使用来自 json 的嵌套数据创建表并将其附加到数据块
【发布时间】:2020-02-18 15:35:49
【问题描述】:

我正在生成一系列嵌套在 json 中的数据,并希望将这些文件自动附加到数据块中的表中。我没有她的架构...这些数据将进入 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()

【问题讨论】:

    标签: python json databricks azure-databricks


    【解决方案1】:

    我们或许可以试试这条路线。

    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()
    

    【讨论】:

      猜你喜欢
      • 2020-02-14
      • 1970-01-01
      • 2020-10-21
      • 2019-09-26
      • 2019-09-17
      • 2019-05-12
      • 2021-10-17
      • 2021-10-06
      • 1970-01-01
      相关资源
      最近更新 更多