我实际上面临一个问题,希望我能解释一下。
我正在尝试使用 PySpark 解析 CSV 文件。这个 csv 文件有一些 JSON 列。这些 Json 列具有相同的 Schema,但填充方式不同。
例如我有:
{"targetUrl":"https://snowplowanalytics.com/products/snowplow-insights", "elementId":NULL, "elementClasses":NULL,"elementTarget":NULL}
或者
{"targetUrl":"https://snowplowanalytics.com/request-demo/", "elementId":"button-request-demo-header-page", "elementClasses":["btn","btn-primary","call-to-action"]}
自动取款机,当我这样做时:
simpleSchema = st.StructType([
st.StructField("targetUrl",st.StringType(),True),
st.StructField("elementId",st.StringType(),True),
st.StructField("elementClasses",st.StringType(),True)
])
df = spark.read.format("csv").option("header","true").option("quoteAll","true").option("escape", "\"").load("./Sources/explore_snowplow_data_raw.csv")
df.select(fn.from_json(fn.col("link_click_event"),simpleSchema).alias("linkJson")).select("linkJson.*").show(50)
(link_click_event 是我的 JSON 列名)
只有我的第二个 JSON 字段完全返回,因为没有值是空的。
我的问题是第一行返回为
+--------------------+--------------------+--------------------+
| targetUrl| elementId| elementClasses|
+--------------------+--------------------+--------------------+
| null| null| null|
我怎样才能达到我的第一行所遵循的结果?
+--------------------+--------------------+--------------------+
| targetUrl| elementId| elementClasses|
+--------------------+--------------------+--------------------+
|"https://snowplo"...| null| null|
非常感谢