【spark】Spark Session 读取csv文件、修改无列名文件名

处理有列名文件

-- 处理有列表名的文件

scala> val cus = spark.read.format("csv").option("header","true").load("hdfs://192.168.56.122:9000/20200107/cust.csv")


scala> cus.printSchema
root
 |-- userid: string (nullable = true)
 |-- lastname: string (nullable = true)
 |-- firstname: string (nullable = true)
 |-- cardno: string (nullable = true)
 |-- address: string (nullable = true)
 |-- area: string (nullable = true)
 |-- city: string (nullable = true)
 |-- language: string (nullable = true)
 |-- scores: string (nullable = true)

// 创建临时表 相当于取表名
cus.registerTempTable("users")
spark.sql("select * from users").show(3)

处理无列名文件

val cs = spark.read.format("csv").load("hdfs://192.168.56.122:9000/20200107/customers.csv")
scala> cs.printSchema
root
 |-- _c0: string (nullable = true)
 |-- _c1: string (nullable = true)
 |-- _c2: string (nullable = true)
 |-- _c3: string (nullable = true)
 |-- _c4: string (nullable = true)
 |-- _c5: string (nullable = true)
 |-- _c6: string (nullable = true)
 |-- _c7: string (nullable = true)
 |-- _c8: string (nullable = true)
// 改单个列名
scala> cs.withColumnRenamed("_c0","id")
res53: org.apache.spark.sql.DataFrame = [id: string, _c1: string ... 7 more fields]
// 多个修改
scala> val lku = Map("_c0"->"id","_c1"->"lname")
lku: scala.collection.immutable.Map[String,String] = Map(_c0 -> id, _c1 -> lname)

scala> cs.select(cs.columns.map(c=>col(c).as(lku.getOrElse(c,c))): _*)
res54: org.apache.spark.sql.DataFrame = [id: string, lname: string ... 7 more fields]

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值