Nar*_*sad 6 scala dataframe apache-spark apache-spark-sql spark-dataframe
如何从arraytypeSpark Scala中的列中仅获取2个数据?我得到的数据就像val df = spark.sqlContext.sql("select col1, col2 from test_tbl").
我有以下数据:
col1 | col2
--- | ---
a | [test1,test2,test3,test4,.....]
b | [a1,a2,a3,a4,a5,.....]
Run Code Online (Sandbox Code Playgroud)
我想获得如下数据:
col1| col2
----|----
a | test1,test2
b | a1,a2
Run Code Online (Sandbox Code Playgroud)
当我这样做时df.withColumn("test", col("col2").take(5))它不起作用.它给出了这个错误:
value take不是org.apache.spark.sql.ColumnName的成员
如何按上述顺序获取数据?
在里面withColumn你可以调用 udfgetPartialstring 来使用它slice,或者take像下面未经测试的示例代码片段那样的方法。
import sqlContext.implicits._
import org.apache.spark.sql.functions._
val getPartialstring = udf((array : Seq[String], fromIndex : Int, toIndex : Int)
=> array.slice(fromIndex ,toIndex ).mkString(","))
Run Code Online (Sandbox Code Playgroud)
你的来电者会看起来像
df.withColumn("test",getPartialstring(col("col2"))
Run Code Online (Sandbox Code Playgroud)
col("col2").take(5)失败是因为列没有方法,take(..) 这就是您的错误消息显示的原因
错误:值不是 org.apache.spark.sql.ColumnName 的成员
您可以使用 udf 方法来解决这个问题。
| 归档时间: |
|
| 查看次数: |
2844 次 |
| 最近记录: |