- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下爆炸查询,它工作正常:
data1 = sqlContext.sql("select explode(names) as name from data")
data1 = sqlContext.sql("select explode(names) as name, explode(colors) as color from data")
Only one generator allowed per select but Generate and and Explode found.;
data1 = sqlContext.sql("select explode(names) as name from data")
data1.registerTempTable('data1')
data1 = sqlContext.sql("select explode(colors) as color from data1")
最佳答案
正确的语法是
select name, color
from data
lateral view explode(names) exploded_names as name
lateral view explode(colors) exploded_colors as color
Rashid 的回答不起作用的原因是它没有“命名”
LATERAL VIEW
生成的表。 .
LATERAL VIEW
就像一个隐含的
JOIN
为
structs
中的每一行创建一个临时表在正在“查看”的集合中。所以,解析语法的方法是:
LATERAL VIEW table_generation_function(collection_column) table_name AS col1, ...
多个输出列
posexplode()
等表格生成函数那么你仍然有一个输出表,但有多个输出列:
LATERAL VIEW posexplode(orders) exploded_orders AS order_number, order
嵌套
LATERAL VIEW
通过反复分解嵌套集合,例如,
LATERAL VIEW posexplode(orders) exploded_orders AS order_number, order
LATERAL VIEW posexplode(order.items) exploded_items AS item_number, item
性能注意事项
LATERAL VIEW
的话题时需要注意的是,通过 SparkSQL 使用它比通过
DataFrame
使用它更有效。 DSL,例如,
myDF.explode()
.原因是 SQL 可以准确地推理模式,而 DSL API 必须在语言类型和数据帧行之间执行类型转换。 DSL API 在性能方面的损失,然而,它获得了灵活性,因为您可以从
explode
返回任何支持的类型,这意味着您可以一步执行更复杂的转换。
df.explode()
通过
df.select(..., explode(...).as(...))
不推荐使用列级爆炸.还有一个
explode_outer()
, 即使要分解的输入是
null
也会产生输出行.列级爆炸不会受到上述行级爆炸的性能问题的影响,因为 Spark 可以完全使用内部行数据表示来执行转换。
关于apache-spark - SparkSQL : Can I explode two different variables in the same query?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36876959/
Hive 外部表指向 S3 上的文件,ddl 包括按 eod 子句分区。一个文件夹下有 5 个子文件夹,每个子文件夹下面都有一个文件,用于不同的 partition_date。即 eod=201806
SparkSQL / DataFrames HBase-Spark连接器(在HBase-Spark模块中)利用Spark-1.2.0中引入的DataSource API (SPARK-3247),弥
我将 RDD[myClass] 转换为数据帧,然后将其注册为 SQL表 my_rdd.toDF().registerTempTable("my_rdd") 该表是可调用的,可以使用以下命令进行演示 %
我在这看到 DataBricks post ,SparkSql 中支持窗口函数,特别是我正在尝试使用 lag() 窗口函数。 我有几行信用卡交易,我已经对它们进行了排序,现在我想遍历这些行,并为每一行
我正在为 hive 使用远程 mysql 元存储。当我运行 hive 客户端时,它运行完美。但是当我尝试通过 spark-shell 或 spark-submit 使用 spark-sql 时,我无法
我有一个 Spark 作业,它正在将数据从 CSV 文件加载到 MySQL 数据库中。 一切正常,但最近我注意到 Spark 在插入阶段打开了许多连接(300 多个连接)。感觉就像每个插入语句都打开一
这段代码来自 Spark Programming Guide , # The result of loading a parquet file is also a DataFrame. parquet
我有一个 Scala spark DataFrame: df.select($"row_id", $"array_of_data").show +----------+----------------
我设计了以下函数来处理任何数字类型的数组: def array_sum[T](item:Traversable[T])(implicit n:Numeric[T]) = item.sum // Reg
我通过 df.saveAsTable 创建了一个持久表 当我运行以下查询时,我会收到这些结果 spark.sql("""SELECT * FROM mytable """).show() 我可以查看
我想通过 sparksql 删除一个配置单元表。 在安装了 hadoop 2.6、hive 2.0、spark 1.6 和 spark 2.0 的集群中。我在两个版本的 pyspark shell 和
我有一个要求,我需要计算 SparkSQL 中 Hive 表的重复行数。 from pyspark import SparkContext, SparkConf from pyspark.sql im
我有一个连接到 Postgres 数据库的 SparkSQL 的非常简单的设置,我正在尝试从一个表中获取一个 DataFrame,该 DataFrame 具有 X 个分区(假设为 2)。代码如下: M
有什么方法可以在 sparksql 中实现存储过程或函数等 sql 功能? 我知道 hbase 中的 hpl sql 和协处理器。但是想知道 spark 中是否有类似的东西。 最佳答案 您可以考虑使用
我正在使用 cloudera vm 10.0,spark 版本为 1.6。 登录 pyspark 控制台后,我正在尝试以下语句从配置单元中获取数据 sqlContext.sql("select * f
我想用 Spark SQL 2.0 执行以下查询 SELECT a.id as id, (SELECT SUM(b.points) FROM tableB b WHERE b.id = a.i
我正在使用 spark sql 对我的数据集运行查询。查询的结果很小,但仍然是分区的。 我想合并生成的 DataFrame 并按列对行进行排序。我试过 DataFrame result = spark
任何人都直接在 HBase 表上使用 SparkSQL,就像在 Hive 表上使用 SparkSQL。 我是spark新手。请指导我如何连接hbase和spark。如何查询hbase表。 最佳答案 A
我正在尝试从 SparkSQL 表(S3 中的 Parquet )中有效地选择单个分区。但是,我看到 Spark 打开表中所有 Parquet 文件的证据,而不仅仅是那些通过过滤器的文件。对于具有大量
我尝试使用 SparkSQL (v.1.3.0) 访问 PostgreSQL 数据库。在这个数据库中,我有一个表 CREATE TABLE test ( id bigint, values dou
我是一名优秀的程序员,十分优秀!