由于VectorAssembler
正在崩溃,如果传递的列有NumericType
或BooleAntype
以外的其他类型,并且我正在处理大量TimestampType
列,我想知道:
有没有一种简单的方法,一次强制转换多个列?
def castColumnTo(df: DataFrame,
columnName: String,
targetType: DataType ) : DataFrame = {
df.withColumn( columnName, df(columnName).cast(targetType) )
}
在scala中用惯用方法转换所有列
def castAllTypedColumnsTo(df: DataFrame, sourceType: DataType, targetType: DataType) = {
df.schema.filter(_.dataType == sourceType).foldLeft(df) {
case (acc, col) => acc.withColumn(col.name, df(col.name).cast(targetType))
}
}
我试图用scala编写一个udf函数,并在pyspark工作中使用它。我的数据帧模式是 我正在尝试编写一个udf函数 在这个map函数中,我试图将行强制转换为case类,但无法。我犯了这个错误。 java.lang.ClassCast异常:org.apache.spark.sql.catalyst.expressions.GenericRowwith模式不能强制转换为变量计算变量计算$myRow3
我正在使用Akka HTTP(在Scala中)开发一个REST服务。我希望传入http get请求的参数转换为ZonedDateTime类型。如果我尝试使用String或Int但在使用ZonedDateTime类型时失败,则代码可以正常工作。代码如下所示: 下面是我看到的错误: 如果我向列表中添加多个参数,我会得到一个不同的错误: 下面是一个代码片段,它将重现我看到的问题
我的spark-submit命令是: ~/spark-2.1.1-bin-hadoop2.6/bin/spark-submit--主纱--部署模式客户端--驱动程序--内存4G--executor-memory 2G--executor-cores 4--类consumer.spark.sample~/sparkstreamingjob/log_testing.jar~/sparkstreamin
我有一个数据帧,它有可变数量的列,如Col1,Col2,Col3。我需要使用下面的代码将Col1和Col2合并到一列数据类型映射中。 但是在不知道列的数量和名称的情况下,如何对所有的列都这样做呢?
我有一个如下的CSV文件。 我想把这个转化成下面。 基本上,我想在输出数据帧中创建一个名为idx的新列,该列将填充与键=idx,value=“n”后面的行相同的值“n”。
我有一个有30多个字符串的列表。如何将list转换为dataframe?我所尝试的: