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获取数据源时没有启动应用程序