我对三角洲湖的概念理解有困难。例如:
1.我读了一份 parquet 的文件:taxi_df = (spark.read.format("parquet").option("header", "true").load("dbfs:/mnt/randomcontainer/taxirides.parquet"))
1.然后我用asTable保存它:taxi_df.write.format("delta").mode("overwrite").saveAsTable("taxi_managed_table")
1.我读取了刚存储的托管表:taxi_read_from_managed_table = (spark.read.format("delta").option("header", "true").load("dbfs:/user/hive/warehouse/taxi_managed_table/"))
1....当我检查类型时,它显示"pyspark. sql. datafame. dataFrame",而不是deltaTable:type(taxi_read_from_managed_table)
#返回pyspark. sql. Dataframe . Dataframe
1.只有在使用下面的命令显式转换它之后,我才会收到DeltaTable类型taxi_delta_table = DeltaTable.convertToDelta(spark,"parquet.
数据库文件系统:/用户/配置单元/仓库/出租车管理表/")
type(taxi_delta_table)
#返回增量表。增量表
/////////////////////////////
这是否意味着阶段4中的表不是delta表,不会提供delta lake提供的自动优化?
你如何确定某个东西是否是三角洲湖的一部分?
我知道delta live表只适用于delta.tables,对吗?
1条答案
按热度按时间uttx8gqw1#
当你使用
spark.read...load()
时,它返回Spark的DataFrame对象,你可以用它来处理数据。在这个DataFrame的幕后,使用Delta Lake表。DataFrame
抽象数据源,这样你就可以使用不同的数据源并应用相同的操作。另一方面,
DeltaTable
是一个特定的对象,它只允许应用Delta特定的操作,你甚至不需要执行convertToDelta
就可以得到它--只需要使用DeltaTable.forPath
或DeltaTable.forName
函数就可以得到它的示例。P.S.如果您使用
.saveAsTable(my_name)
保存数据,则不需要使用.load
,只需使用spark.read.table(my_name)
。