你好,
我有一個PySpark DataFrame包含1100萬條記錄。我創建了DataFrame集群。這不是保存在DBFS或存儲賬戶。
進口pyspark.sql。函數從pyspark.sql F。功能導入坳,地板,expr,小時,分鍾,to_timestamp,爆炸,序列#定義的開始和結束日期時間間隔start_datetime =“1990-01-01”就是end_datetime =“2099-12-31 23:55:00”interval_minutes = 5 #分鍾#創建帶有間隔序列的DataFrame df =火花。範圍(0,1).select (expr (f”序列(to_timestamp (“{start_datetime}”), to_timestamp (“{end_datetime}”),間隔{interval_minutes}分鍾)”).alias(“時間”))#爆炸序列列來創建個人間隔df = df.select(爆炸(坳(“時間”)).alias(“時間”))#創建帶有間隔序列的DataFrame df =火花。範圍(0,1).select (expr (f”序列(to_timestamp (“{start_datetime}”), to_timestamp (“{end_datetime}”),間隔{interval_minutes}分鍾)”).alias(“時間”))#爆炸序列列來創建個人間隔df = df.select(爆炸(坳(“時間”)).alias(“時間”))# interval_period df = df添加一個新的列。withColumn (Interval_Period, Interval_Period) df = df。withColumn (Interval_Date, F.to_date (F.col(“時間”)))
當我想寫在存儲賬戶三角洲表:
df。寫\ .format(“δ”)\ .mode(“覆蓋”)\ .option(“路徑”、“table_path”) \ .saveAsTable (my_table) #外部表
我得到錯誤:
AnalysisException:中發現無效的字符(s), {} () \ n \ t = '列名的模式。請升級您的三角洲表讀者和作家版本5和版本2列映射模式更改為“名字”映射。您可以使用以下命令:ALTER TABLE TBLPROPERTIES (delta.columnMapping。模式”=“名稱”、“三角洲。minReaderVersion ' = ' 2 ', '三角洲。minWriterVersion ' = ' 5 ')Refer to table versioning athttps://docs.microsoft.com/azure/databricks/delta/versioning
我的問題是我怎麼可以設置這些屬性。不是我沒有δ表。我是一個DataFrame上創建一個集群。
我得到錯誤當我希望t寫文件。
嗨@Mohammad軍刀,據我的理解,這個問題抱怨的一些列在三角洲表(你在哪裏寫),{}()\ n \ t = '列名。你需要改變讀者和作家三角洲表的版本能夠2和5分別使用以下命令
ALTER TABLE TBLPROPERTIES (
“delta.columnMapping。模式”=“名稱”,
“三角洲。minReaderVersion ' = ' 2 ',
“三角洲。minWriterVersion ' = ' 5 ')
嗨@Mohammad軍刀,據我的理解,這個問題抱怨的一些列在三角洲表(你在哪裏寫),{}()\ n \ t = '列名。你需要改變讀者和作家三角洲表的版本能夠2和5分別使用以下命令
ALTER TABLE TBLPROPERTIES (
“delta.columnMapping。模式”=“名稱”,
“三角洲。minReaderVersion ' = ' 2 ',
“三角洲。minWriterVersion ' = ' 5 ')