Gar*_*rpe 6 apache-spark apache-spark-sql spark-csv
我知道如何使用spark-csv(https://github.com/databricks/spark-csv)将csv文件读入spark ,但我已经将csv文件表示为字符串,并希望将此字符串直接转换为数据帧.这可能吗?
MxR*_*MxR 12
更新:从Spark 2.2.x开始, 最终有一种使用数据集的正确方法.
import org.apache.spark.sql.{Dataset, SparkSession}
val spark = SparkSession.builder().appName("CsvExample").master("local").getOrCreate()
import spark.implicits._
val csvData: Dataset[String] = spark.sparkContext.parallelize(
"""
|id, date, timedump
|1, "2014/01/01 23:00:01",1499959917383
|2, "2014/11/31 12:40:32",1198138008843
""".stripMargin.lines.toList).toDS()
val frame = spark.read.option("header", true).option("inferSchema",true).csv(csvData)
frame.show()
frame.printSchema()
Run Code Online (Sandbox Code Playgroud)
旧火花版本
实际上你可以,虽然它使用的是库内部,但没有广泛宣传.只需创建并使用您自己的CsvParser实例即可.我在火花1.6.0和spark-csv_2.10-1.4.0下面的示例
import com.databricks.spark.csv.CsvParser
val csvData = """
|userid,organizationid,userfirstname,usermiddlename,userlastname,usertitle
|1,1,user1,m1,l1,mr
|2,2,user2,m2,l2,mr
|3,3,user3,m3,l3,mr
|""".stripMargin
val rdd = sc.parallelize(csvData.lines.toList)
val csvParser = new CsvParser()
.withUseHeader(true)
.withInferSchema(true)
val csvDataFrame: DataFrame = csvParser.csvRdd(sqlContext, rdd)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5967 次 |
| 最近记录: |