假设您在dbfs中创建了一个表,如下所示。
%sql
DROP TABLE IF EXISTS silver_loan_stats;
-- Explicitly define our table, providing schema for schema enforcement.
CREATE TABLE silver_loan_stats (
loan_status STRING,
int_rate FLOAT,
revol_util FLOAT,
issue_d STRING,
earliest_cr_line STRING,
emp_length FLOAT,
verification_status STRING,
total_pymnt DOUBLE,
loan_amnt FLOAT,
grade STRING,
annual_inc FLOAT,
dti FLOAT,
addr_state STRING,
term STRING,
home_ownership STRING,
purpose STRING,
application_type STRING,
delinq_2yrs FLOAT,
total_acc FLOAT,
bad_loan STRING,
issue_year DOUBLE,
earliest_year DOUBLE,
credit_length_in_years DOUBLE)
USING DELTA
LOCATION "/tmp/${username}/silver_loan_stats";
稍后,将数据(一个名为'loan\u stats'的Dataframe)保存到此源位置。
# Configure destination path
DELTALAKE_SILVER_PATH = f"/tmp/{username}/silver_loan_stats"
# Write out the table
loan_stats.write.format('delta').mode('overwrite').save(DELTALAKE_SILVER_PATH)
# Read the table
loan_stats = spark.read.format("delta").load(DELTALAKE_SILVER_PATH)
display(loan_stats)
我的问题是:
表和源数据是否链接?例如,删除或连接表中的数据也会更新源中的数据,删除或连接源中的数据也会更新表中的数据?
当您创建一个视图而不是一个表(“createorreplacetempview”而不是create table)时,上述情况是否成立?
当spark dataframes已经提供了很多功能时,我正在尝试了解使用spark sql的意义。。如果这两个数据实际上是相同的,我想这对我来说是有意义的,但是如果create table(或createorreplacetempview)意味着您要创建一个副本,那么我发现很难理解您为什么要花费这么多精力(和计算资源)来这样做。
暂无答案!
目前还没有任何答案,快来回答吧!