我正在使用 Spark 讀取存盤在 ADLS gen2 上的 AVRO 檔案,如下所示:
import dbutils as dbutils
from pyspark.conf import SparkConf
from pyspark.sql import SparkSession
file="abfss://[email protected]/xyz-event-collection/my-events/27/2021/11/01/01/01/01.avro"
key="..........."
appName = "MyEventsReadTest"
master = "local[*]"
sparkConf=SparkConf() \
.setAppName(appName) \
.setMaster(master) \
.set("fs.azure.account.key.dechitraguptdatalake.dfs.core.windows.net", key)
spark=SparkSession.builder.config(conf=sparkConf).getOrCreate()
df=spark.read.format("avro").load(file)
df.show()
我提交這個readEventsFromADLS2.py檔案如下:
spark-submit --packages org.apache.spark:spark-avro_2.12:2.4.8 --jars hadoop-azure-3.3.1.jar ./readEventsFromADLS2.py
但是,結果我只得到縮短的輸出。
21/11/15 13:21:03 INFO CodeGenerator: Code generated in 13.582867 ms
-------------- -------- -------------------- -------------------- ---------- --------------------
|SequenceNumber| Offset| EnqueuedTimeUtc| SystemProperties|Properties| Body|
-------------- -------- -------------------- -------------------- ---------- --------------------
| 31411|21976208|11/10/2021 12:11:...|{x-opt-enqueued-t...| {}|[7B 22 70 61 79 6...|
| 31412|21977032|11/10/2021 12:11:...|{x-opt-enqueued-t...| {}|[7B 22 70 61 79 6...|
| 31413|21977736|11/10/2021 12:12:...|{x-opt-enqueued-t...| {}|[7B 22 70 61 79 6...|
| 31414|21977800|11/10/2021 12:12:...|{x-opt-enqueued-t...| {}|[7B 22 70 61 79 6...|
| 31415|21978336|11/10/2021 12:12:...|{x-opt-enqueued-t...| {}|[7B 22 70 61 79 6...|
| 31416|21978872|11/10/2021 12:12:...|{x-opt-enqueued-t...| {}|[7B 22 70 61 79 6...|
| 31417|21979632|11/10/2021 12:12:...|{x-opt-enqueued-t...| {}|[7B 22 70 61 79 6...|
-------------- -------- -------------------- -------------------- ---------- --------------------
21/11/15 13:21:03 INFO SparkContext: Invoking stop() from shutdown hook
問題:
- 如何在上述輸出中列印完全展開的列?
- 如何
Body以文本格式查看部分(上述輸出中的最后一列)?Body 實際上是一個 JSON,但在這里以位元組陣列的形式出現。
當我將 df.show() 更改為 時df.show(10,False),我仍然得到該Body欄位的二進制位元組陣串列示:
|31411 |21976208|11/10/2021 12:11:46 PM|{x-opt-enqueued-time -> {1636546306366, null, null, null}}|{} |[7B 22 70 61 79 6C 6F 64 22 3A....]
uj5u.com熱心網友回復:
要完全顯示您可以使用的所有列:
df.select("body").show(false)
如果資料確實是 JSON 并且您希望它讀取的是 JSON,請考慮指定模式而不是讓 Spark 為您解釋它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/360772.html
