1
我試圖從表中獲取列的唯一值,並將其與其他列(如sum,tablename)一起打印,如下面的查詢中所示。 下面顯示的子查詢獲取多行是有效的,但爲了將它放在列中,我需要將它列爲列表或文本,例如[1,2,1]。如何將這些數據展平以適應如下所示的相同查詢。我的首選方法是使用Spark SQL。請幫忙。在火花sql查詢中展平數據 - Spark Dataframe
**Subquery**
(select distinct $field from tablename)
**Actual Code**
RDDdf.createOrReplaceTempView(「tablename」)
val x= RDDdf.schema.fieldNames
val dfs = x.map(field => spark.sql(s"select 'RDDdf' as TableName,
'$field'as column, sum($field) as Sum, (select distinct $field from
tablename) from tablename"))
**Expected output**
TableName | column | Sum | UniqueVal
----------+---------+-----+----------
RDDdf | a | 4 | 1,2,1
謝謝T.Gaweda!數據集將會有數百萬行的巨大數據......用其他方式來編寫同樣的東西? – sabby
@sabby問題是,所有的數據將被收集到一個節點。沒有其他選擇來做這樣的查詢。 collect_list是一個很好的函數,只是你的用例會讓它變慢,因爲除了在一個節點上收集所有值之外沒有其他選項顯示所有值 –
問題是當你有很多不同的字段值時 - 如果你有幾百萬行,但是隻有幾個獨特的值,那麼在一個節點上收集數據將沒有問題:) –