Spark:JSON文字列のJSONスキーマを生成する

ライプニッツ

Spark2.4.3とScala2.11を使用しています

以下は、DataFrame列の現在のJSON文字列です。関数JSON stringを使用して、このスキーマを別の列に格納しようとしていschema_of_jsonます。しかし、そのエラーの下にスローします。どうすればこれを解決できますか?

{
  "company": {
    "companyId": "123",
    "companyName": "ABC"
  },
  "customer": {
    "customerDetails": {
      "customerId": "CUST-100",
      "customerName": "CUST-AAA",
      "status": "ACTIVE",
      "phone": {
        "phoneDetails": {
          "home": {
            "phoneno": "666-777-9999"
          },
          "mobile": {
            "phoneno": "333-444-5555"
          }
        }
      }
    },
    "address": {
      "loc": "NORTH",
      "adressDetails": [
        {
          "street": "BBB",
          "city": "YYYYY",
          "province": "AB",
          "country": "US"
        },
        {
          "street": "UUU",
          "city": "GGGGG",
          "province": "NB",
          "country": "US"
        }
      ]
    }
  }
}

コード:

val df = spark.read.textFile("./src/main/resources/json/company.txt")
df.printSchema()
df.show()

root
 |-- value: string (nullable = true)

+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|value                                                                                                                                                                                                                                                                                                                                                                                                                              |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|{"company":{"companyId":"123","companyName":"ABC"},"customer":{"customerDetails":{"customerId":"CUST-100","customerName":"CUST-AAA","status":"ACTIVE","phone":{"phoneDetails":{"home":{"phoneno":"666-777-9999"},"mobile":{"phoneno":"333-444-5555"}}}},"address":{"loc":"NORTH","adressDetails":[{"street":"BBB","city":"YYYYY","province":"AB","country":"US"},{"street":"UUU","city":"GGGGG","province":"NB","country":"US"}]}}}|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


df.withColumn("jsonSchema",schema_of_json(col("value")))

エラー:

Exception in thread "main" org.apache.spark.sql.AnalysisException: cannot resolve 'schemaofjson(`value`)' due to data type mismatch: The input json should be a string literal and not null; however, got `value`.;;
'Project [value#0, schemaofjson(value#0) AS jsonSchema#10]
+- Project [value#0]
   +- Relation[value#0] text
ライプニッツ

私が見つけた回避策はvalue、以下のようにschema_of_json関数に渡すことでした

df.withColumn("jsonSchema",schema_of_json(df.select(col("value")).first.getString(0)))

礼儀:

JSON形式のSparkDataFrame列での暗黙的なスキーマ検出

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

文字列内の数字と特殊文字を除外するJsonスキーマパターン

分類Dev

SparkDataframeのjson文字列の複数の行にわたってスキーマを統合する

分類Dev

JSONスキーマから検証コードを生成する

分類Dev

json文字列をスキーマなしで構造体列に変換する方法をスパークする

分類Dev

typescriptからJSONスキーマを生成する

分類Dev

pydanticで厳密なjsonスキーマを生成する方法は?

分類Dev

JSONデータからJSONスキーマを生成するツール

分類Dev

「null」文字列と空の文字列のJsonスキーマ検証

分類Dev

Javaを使用してJSONからJSONスキーマを生成する

分類Dev

Java / Android-文字列スキーマに対して文字列JSONを検証する

分類Dev

JsonスキーマからサンプルJson出力を生成する

分類Dev

JsonスキーマをJson文字列またはオブジェクトに逆シリアル化する

分類Dev

テキストフィールドのJSON文字列からJSONキー/値を取得するDjango

分類Dev

キーとして整数を使用してjson文字列を生成する方法は?

分類Dev

動的なキーの名前とオブジェクト型のJSONスキーマを生成する方法は?

分類Dev

JSONスキーマを使用してキーの文字列値を検証するにはどうすればよいですか?

分類Dev

スキーマレスJSONから動的フォームを生成する

分類Dev

C#文字列フォーマッタでJson文字列の中括弧をエスケープする方法

分類Dev

Pythonで2つのjson文字列をマージする方法は?

分類Dev

golangで2つのJSON文字列をマージする

分類Dev

同じキーのみでjson配列をマージする

分類Dev

スキーマを使用してjson文字列をDataFrameに適合させる

分類Dev

JSON文字列の特殊文字をエスケープする

分類Dev

JSONスキーマに列挙値を設定する

分類Dev

C#で別のモデルを含むモデルのJSONスキーマを生成する方法

分類Dev

PHPの異なるキーで2つのJSON文字列を1つにマージします

分類Dev

Golang:キーとして文字列を使用してjsonをアンマーシャルする最良の方法

分類Dev

Javaインスタンスの完全なjson文字列を生成する方法

分類Dev

JSON文字列の正規表現を使用して名前に基づいて値をマスキングする

Related 関連記事

  1. 1

    文字列内の数字と特殊文字を除外するJsonスキーマパターン

  2. 2

    SparkDataframeのjson文字列の複数の行にわたってスキーマを統合する

  3. 3

    JSONスキーマから検証コードを生成する

  4. 4

    json文字列をスキーマなしで構造体列に変換する方法をスパークする

  5. 5

    typescriptからJSONスキーマを生成する

  6. 6

    pydanticで厳密なjsonスキーマを生成する方法は?

  7. 7

    JSONデータからJSONスキーマを生成するツール

  8. 8

    「null」文字列と空の文字列のJsonスキーマ検証

  9. 9

    Javaを使用してJSONからJSONスキーマを生成する

  10. 10

    Java / Android-文字列スキーマに対して文字列JSONを検証する

  11. 11

    JsonスキーマからサンプルJson出力を生成する

  12. 12

    JsonスキーマをJson文字列またはオブジェクトに逆シリアル化する

  13. 13

    テキストフィールドのJSON文字列からJSONキー/値を取得するDjango

  14. 14

    キーとして整数を使用してjson文字列を生成する方法は?

  15. 15

    動的なキーの名前とオブジェクト型のJSONスキーマを生成する方法は?

  16. 16

    JSONスキーマを使用してキーの文字列値を検証するにはどうすればよいですか?

  17. 17

    スキーマレスJSONから動的フォームを生成する

  18. 18

    C#文字列フォーマッタでJson文字列の中括弧をエスケープする方法

  19. 19

    Pythonで2つのjson文字列をマージする方法は?

  20. 20

    golangで2つのJSON文字列をマージする

  21. 21

    同じキーのみでjson配列をマージする

  22. 22

    スキーマを使用してjson文字列をDataFrameに適合させる

  23. 23

    JSON文字列の特殊文字をエスケープする

  24. 24

    JSONスキーマに列挙値を設定する

  25. 25

    C#で別のモデルを含むモデルのJSONスキーマを生成する方法

  26. 26

    PHPの異なるキーで2つのJSON文字列を1つにマージします

  27. 27

    Golang:キーとして文字列を使用してjsonをアンマーシャルする最良の方法

  28. 28

    Javaインスタンスの完全なjson文字列を生成する方法

  29. 29

    JSON文字列の正規表現を使用して名前に基づいて値をマスキングする

ホットタグ

アーカイブ