所以我需要创建一个从 1 到 100 枚举的数字数组,作为每行的值作为一个额外的列。
使用array()带有一堆文字值的函数是可行的,但是肯定有一种方法可以使用/转换 ScalaRange(a to b)而不是单独列出每个数字?
spark.sql("SELECT key FROM schema.table")
.otherCommands
.withColumn("range", array(lit(1), lit(2), ..., lit(100)))
Run Code Online (Sandbox Code Playgroud)
类似于:
withColumn("range", array(1 to 100))
Run Code Online (Sandbox Code Playgroud) 对不起,如果这个问题看起来有点愚蠢,但我有以下代码:
var sides = {
'red': [0,0,0,0,0,0,0,0,0],
'ora': [0,0,0,0,2,0,0,3,0],
'yel': [0,0,0,0,0,0,0,0,0],
'gre': [0,0,0,1,0,1,0,0,0],
'blu': [0,0,0,0,0,0,0,0,0],
'whi': [0,0,0,0,0,0,0,0,0],
}
Run Code Online (Sandbox Code Playgroud)
作为一个例子,我如何在边['red']中引用数组项[0]?
我试过了:
sides['red'][0];
sides['red'[0]];
Run Code Online (Sandbox Code Playgroud)
这可能是非常错误的,任何人都可以建议我怎么声明它呢?
我需要一个查询列出spark内部唯一的复合分区键.
CASSANDRA中的查询SELECT DISTINCT key1, key2, key3 FROM schema.table;非常快,但是在RDD中使用相同类型的数据过滤器或者spark.sql在比较中检索结果的速度非常慢.
例如
---- SPARK ----
var t1 = sc.cassandraTable("schema","table").select("key1", "key2", "key3").distinct()
var t2 = spark.sql("SELECT DISTINCT key1, key2, key3 FROM schema.table")
t1.count // takes 20 minutes
t2.count // takes 20 minutes
---- CASSANDRA ----
// takes < 1 minute while also printing out all results
SELECT DISTINCT key1, key2, key3 FROM schema.table;
Run Code Online (Sandbox Code Playgroud)
表格格式如下:
CREATE TABLE schema.table (
key1 text,
key2 text,
key3 text,
ckey1 text,
ckey2 text,
v1 int, …Run Code Online (Sandbox Code Playgroud)