所以我试图加载 csv 文件来推断自定义模式,但每次我最终都会出现以下错误:
Project_Bank.csv 不是 Parquet 文件。尾部的预期幻数 [80, 65, 82, 49] 但发现 [110, 111, 13, 10]
这就是我的程序和我的 csv 文件条目的样子,
年龄;工作;婚姻;教育;默认;余额;住房;贷款;联系人;天;月;持续时间;竞选活动;pdays;以前;poutcome;y 58;管理;已婚;高等教育;否;2143;是;否;未知;5;可能;261;1;-1;0;未知;无 44;技术员;单身;中学;无;29;是;无;未知;5;可能;151;1;-1;0;未知;不 33;企业家;已婚;中学;否;2;是;是;未知;5;可能;76;1;-1;0;未知;否
我的代码:
$spark-shell --packages com.databricks:spark-csv_2.10:1.5.0
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import org.apache.spark.sql.types._
import org.apache.spark.sql.SQLContext
import sqlContext.implicits._
import org.apache.spark.sql.types.{StructType, StructField, StringType, IntegerType}
val bankSchema = StructType(Array(
StructField("age", IntegerType, true),
StructField("job", StringType, true),
StructField("marital", StringType, true),
StructField("education", StringType, true),
StructField("default", StringType, true),
StructField("balance", IntegerType, true),
StructField("housing", StringType, true),
StructField("loan", StringType, true),
StructField("contact", StringType, true),
StructField("day", IntegerType, true),
StructField("month", StringType, true),
StructField("duration", IntegerType, true),
StructField("campaign", IntegerType, true),
StructField("pdays", IntegerType, true),
StructField("previous", IntegerType, true),
StructField("poutcome", StringType, true),
StructField("y", StringType, true)))
val df = sqlContext.
read.
schema(bankSchema).
option("header", "true").
option("delimiter", ";").
load("/user/amit.kudnaver_gmail/hadoop/project_bank/Project_Bank.csv").toDF()
df.registerTempTable("people")
df.printSchema()
val distinctage = sqlContext.sql("select distinct age from people")
任何关于为什么在推送正确的模式后无法在此处使用 csv 文件的建议。提前感谢您的建议。
谢谢阿米特 K