Начиная с Spark 2.0, CSV может быть прочитан непосредственно в DataFrame
.
Если файл данных не имеет строки заголовка, это будет:
val df = spark.read.csv("file://path/to/data.csv")
Это приведет к загрузке данных, но даст каждому столбцу общие имена, такие как _c0
, _c1
и т. д.
Если есть заголовки, то добавление .option("header", "true")
будет использовать первую строку для определения столбцов в DataFrame
:
val df = spark.read
.option("header", "true")
.csv("file://path/to/data.csv")
Для конкретного примера предположим, что у вас есть файл с содержимым:
user,topic,hits
om,scala,120
daniel,spark,80
3754978,spark,1
Тогда следующее получится всего хитов по темам:
import org.apache.spark.sql.functions._
import spark.implicits._
val rawData = spark.read
.option("header", "true")
.csv("file://path/to/data.csv")
// specifies the query, but does not execute it
val grouped = rawData.groupBy($"topic").agg(sum($"hits))
// runs the query, pulling the data to the master node
// can fail if the amount of data is too much to fit
// into the master node's memory!
val collected = grouped.collect
// runs the query, writing the result back out
// in this case, changing format to Parquet since that can
// be nicer to work with in Spark
grouped.write.parquet("hdfs://some/output/directory/")
// runs the query, writing the result back out
// in this case, in CSV format with a header and
// coalesced to a single file. This is easier for human
// consumption but usually much slower.
grouped.coalesce(1)
.write
.option("header", "true")
.csv("hdfs://some/output/directory/")
Только для совместно использовать, у меня была подобная проблема, у меня были португальские диакритические знаки в файле, и BCP импортировала символы мусора. (например, ГЂ стал в” ґ), я попробовал-C почти всеми кодовыми страницами без успеха. После закрытия я нашел подсказку на странице справки MS BCP.
кодовые страницы Файла формата имеют приоритет над атрибутом-C
Средства, как которые в файле формата я должен был использовать "" в LastName, после того как я изменил кодовую страницу,-C 65001 атрибута импортировал файл UTF8 без любой проблемы
13.0
4
1 SQLCHAR 0 7 "," 1 PersonID ""
2 SQLCHAR 0 25 "," 2 FirstName SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 30 "," 3 LastName ""
4 SQLCHAR 0 11 "\r\n" 4 BirthDate ""