- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Spark SQL 中有一个查询,它按预期使用广播连接,因为我的表 b 小于 spark.sql.autoBroadcastJoinThreshold
.
但是,如果我将完全相同的选择查询放入 CTAS 查询中,那么出于某种原因它不会使用广播连接。
选择查询如下所示:
select id,name from a join b on a.name = b.bname;
== Physical Plan ==
Project [id#1,name#2]
+- BroadcastHashJoin [name#2], [bname#3], BuildRight
:- Scan ParquetRelation: default.a[id#1,name#2] InputPaths: ...
+- ConvertToUnsafe
+- HiveTableScan [bname#3], MetastoreRelation default, b, Some(b)
create table c as select id,name from a join b on a.name = b.bname;
== Physical Plan ==
ExecutedCommand CreateTableAsSelect [Database:default}, TableName: c, InsertIntoHiveTable]
+- Project [id#1,name#2]
+- Join Inner, Some((name#2 = bname#3))
:- Relation[id#1,name#2] ParquetRelation: default.a
+- MetastoreRelation default, b, Some(b)
最佳答案
如果您的问题是关于 Spark 创建两个不同物理计划的原因,那么此答案将无济于事。我在 Spark 的优化器中观察到了大量的敏感性,其中相同的 SQL 片段会导致有意义的不同物理计划,即使情况并不明显。
但是,如果您的问题最终是关于如何使用广播连接执行 CTAS,那么这里有一个我已经多次使用的简单解决方法:使用您喜欢的计划将查询注册为临时表(或者查看您是否使用 SQL控制台),然后使用 SELECT * from tmp_tbl
作为提供 CTAS 的查询。
换句话说,类似于:
sql("select id, name from a join b on a.name = b.bname").registerTempTable("tmp_joined")
sql("create table c as select * from tmp_joined")
关于apache-spark - 为什么 Spark 1.6.1 中的 Spark SQL 没有在 CTAS 中使用广播连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37771050/
当我们这样做时: create table big2 as select * from big1; 索引和约束是否也复制到新表中? 最佳答案 仅复制 NOT NULL 约束。请参阅FAQ . 您可以执
我想将包含文本格式的现有表更改为 orc 格式。我能够通过以下方式做到这一点:(1) 手动创建一个包含分区的 orc 格式的表,然后,(2) 使用INSERT OVERWRITE语句填充表。 我正尝试
我正在使用 HDP 2.5 和 Hive 服务。当我使用以下查询创建配置单元表时; create table Sample_table row format delimited fields term
在hive中,通过CTAS创建外部表是一个语义错误,为什么?CTAS创建的表是原子的,而external table是指drop table时不会删除数据,看起来并不冲突。 最佳答案 在 Hive 中
是否可以在 Oracle 中编写 CTAS(create table as select ...)查询来创建索引组织表? 在网上查看并尝试了几个版本的 CTAS,但无法找到有效的示例/查询。 最佳答案
我需要使用 CTAS (Create Table As Select)创建一个名为 Au_Books_ZL 的表包含 au_id, fname, lname, title_id, title, Pub
我无法弄清楚我的 CTAS 查询出了什么问题,即使我没有提到任何分桶列,它也会在存储在分区内时将数据分解成更小的文件。有没有办法避免这些小文件并将每个分区存储为一个文件,因为小于 128 MB 的文件
我正在尝试构建一个 Azure 数据工厂管道,用于从 Azure 数据湖获取数据并进行转换。 我想将转换后的数据存储在 Azure SQL 数据仓库中(作为事实和维度)。 我最终提出了两种解决方案来使
我正在尝试构建一个 Azure 数据工厂管道,用于从 Azure 数据湖获取数据并进行转换。 我想将转换后的数据存储在 Azure SQL 数据仓库中(作为事实和维度)。 我最终提出了两种解决方案来使
我注意到Create Table As Select (CTAS)与 Select into 语句相比,SQL 数据仓库中的语句速度极快。 我想知道微软到底做了什么魔法才能让它如此之快? 最佳答案 神
我在让这个表创建查询工作时遇到了一些问题,我想知道我是否遇到了 redshift 的限制。 这是我想做的:我有需要在模式之间移动的数据,我需要为数据动态创建目标表,但前提是它们尚不存在。 以下是我知道
我在 Spark SQL 中有一个查询,它按预期使用广播连接,因为我的表 b 小于 spark.sql.autoBroadcastJoinThreshold . 但是,如果我将完全相同的选择查询放入
我是一名优秀的程序员,十分优秀!