将数据复制到Redshift时出现错误。在查看stl_load_errors
表后,看来原因是由于Delimiter not found
。
我正在数据框列之间使用组分隔符,并将数据另存为文本文件:
val columns: Array[Column] = salesDF.columns.map(col)
val dataFrame = salesDF.select(concat_ws(String.valueOf(29.toChar), columns: _*)).write.text(outputLocation)
文件中的结果数据如下:
与成功加载到Redshift的文件中的数据进行比较之后,我怀疑问题在于最后没有分隔符。
但是分隔符已经传递给concat_ws
。而且我不太了解在保存上述数据时如何实现这一目标?换句话说,如何在每行的末尾添加相同的分隔符?
答案 0 :(得分:2)
concat_ws
函数只会在您提供的值之间添加一个分隔符。要在每行末尾添加其他分隔符,可以使用concat
函数。
val sep = String.valueOf(29.toChar)
salesDF.select(concat(concat_ws(sep, columns: _*), lit(sep)))
答案 1 :(得分:2)
尝试以下方法:
val columns: Array[Column] = salesDF.columns.map(c => concat(col(c), typedLit(String.valueOf(29.toChar))))
val dataFrame = salesDF.select(concat(columns: _*)).write.text(outputLocation)