创建表tblname作为选择有什么区别...vs. 创建表 tblname(....)使用<format>位置"..."


The table data path: /mnt/data/account_transactions
Database: office
Table (to be created): ACCOUNT_TRANS (Accounts Transactions)

谁能确认我的理解是否正确,否则请解释两种方法之间的差异。

方法1(

CREATE TABLE office.account_trans
AS
SELECT * FROM parquet.`/mnt/data/account_transactions`

方法2( 如果我们知道account_trans中的字段: AccountId, AccountName, TransactionAmt, BalanceAmt

CREATE TABLE office.account_trans (
AccountId STRING, 
AccountName STRING, 
TransactionAmt DOUBLE, 
BalanceAmt DOUBLE
)
USING parquet
LOCATION '/mnt/data/account_transactions'

我的理解:方法1(在这里,首先执行 Select 查询,然后根据刚刚执行的选择查询的结果创建表。

因此,添加到/mnt/data/account_transactions 的任何新记录都不会反映office.account_trans表中。

方法2(由于这里我们将 LOCATION 子句作为/mnt/data/account_transactions,因此任何新的添加/删除/更新都将反映在office.account_trans

是的,根据文档,LOCATION 子句意味着 EXTERNAL,因此可以在不显式插入 Spark 的情况下读取新数据。话虽如此,您可能需要刷新缓存才能让元存储读取更新的信息。

相关内容

  • 没有找到相关文章

最新更新