【发布时间】:2017-12-08 04:38:04
【问题描述】:
我是 SparkSQL/Scala 的新手,我正在为几个看似简单的任务而苦苦挣扎。
我正在尝试从 Scala 字符串数组构建一些动态 SQL。我正在尝试在我的 DataFrame 中重新键入一些列,但在运行时我可以看到 DataFrame 中的列集之前,我不会确切知道我需要重新键入哪些列。所以我正在尝试这样做:
val cols = df.columns
val typedCols = cols.map( c => getTypedColumn(c) )
df.select( ...) or df.selectExpr(...) // how to invoke this with vals from my string array??
typedCols 最终会成为一个字符串数组,其值如下:
["a", "cast(b as int) b", "c"]
我需要先从那个数组创建一个大逗号分隔的字符串吗?
因此,假设这可行,我将调用该 select 语句,它会将我的 DataFrame 转换为具有我所需类型的新 DataFrame。但是 DataFrame 中的一些记录会出现错误,并且尝试重新输入会失败。
如何获得包含所有通过输入的好记录的 DataFrame 结果,然后将所有坏记录扔到某种错误桶中?在尝试 DataFrame 选择之前,我是否需要先通过验证?
【问题讨论】:
标签: scala apache-spark apache-spark-sql spark-dataframe