scala – 将dataframe中的字符串数据转换为double
发布时间:2020-12-16 10:05:55 所属栏目:安全 来源:网络整理
导读:我有一个包含double类型的csv文件.当我加载到数据帧时,我收到此消息告诉我类型字符串是 java.lang.String不能转换为java.lang.Double虽然我的数据是数字.我怎么得到这个csv文件的数据帧包含double type.how我应该修改我的代码. import org.apache.spark.sql.
|
我有一个包含double类型的csv文件.当我加载到数据帧时,我收到此消息告诉我类型字符串是
java.lang.String不能转换为java.lang.Double虽然我的数据是数字.我怎么得到这个csv文件的数据帧包含double type.how我应该修改我的代码.
import org.apache.spark.sql._
import org.apache.spark.sql.functions._
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.types.{ArrayType,DoubleType}
import org.apache.spark.sql.functions.split
import scala.collection.mutable._
object Example extends App {
val spark = SparkSession.builder.master("local").appName("my-spark-app").getOrCreate()
val data=spark.read.csv("C://lpsa.data").toDF("col1","col2","col3","col4","col5","col6","col7","col8","col9")
val data2=data.select("col2","col7")
我可以做什么来将数据帧中的每一行转换为double类型?谢谢 解决方法
使用选择与强制转换:
import org.apache.spark.sql.functions.col
data.select(Seq("col2","col7").map(
c => col(c).cast("double")
): _*)
或者将架构传递给读者: >定义架构: import org.apache.spark.sql.types._
val cols = Seq(
"col1","col9"
)
val doubleCols = Set("col2","col7")
val schema = StructType(cols.map(
c => StructField(c,if (doubleCols contains c) DoubleType else StringType)
))
>并将其用作架构方法的参数 spark.read.schema(schema).csv(path) 也可以使用模式推断: spark.read.option("inferSchema","true").csv(path)
但它要贵得多. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Bootstrap 模态框(Modal)插件代码解析
- 杀手SQL:一条关于 ‘Not in’ SQL 的优化案例
- docker stack命令
- shell – 逐行比较两个文件,并在另一个文件中生成差异
- angularjs-ng-repeat – 使用带有anglejs ng-repeat的svg
- java – Docker创建巨大的图像大小
- Typescript / Angular2 http.post不设置标题
- 打字稿错误 – Angular AoT构建失败 – Node.js离子移动应用
- 搜索 – “超级明星”或在emacs下找到相当于光标的单词
- Scala在从application.conf获取数据源时没有启动应用程序
