Я искал через stackoverflow уже несколько дней, и я просто не нашел ответа на следующий вопрос. Я действительно новичок в кодировании Scala, так что это может быть очень простой вопрос. Любая помощь будет высоко ценится.
Проблема, с которой я столкнулся (ошибка), связана с последним битом кода.
Я пытаюсь получить отфильтрованное подмножество записей из фрейма данных, где во всех отфильтрованных записях отсутствуют данные из одного или нескольких из указанные поля.
Я использую Scala IDE Build 4.7.0 в Eclipse.
В файле pom.xml, который я использую, есть spark-core_2.11, версия 2.0.0.
Спасибо.
Джесси
val source_path = args(0)
val source_file = args(1)
val vFile = sc.textFile(source_path + "/" + source_file)
val vSchema = StructType(
StructField("FIELD_1",LongType,false)::
StructField("FIELD_2",LongType,false)::
StructField("FIELD_3",StringType,true)::
StructField("FIELD_4",StringType,false)::
StructField("FIELD_ADD_1",StringType,false)::
StructField("FIELD_ADD_2",StringType,false)::
StructField("FIELD_ADD_3",StringType,false)::
StructField("FIELD_ADD_4",StringType,false)::
StructField("FIELD_5",StringType,false)::
StructField("FIELD_6",StringType,false)::
StructField("FIELD_7",StringType,false)::
StructField("FIELD_8",StringType,false)::
Nil)
// val vRow = vFile.map(x=>x.split((char)30, -1)).map(x=> Row(
val vRow = vFile.map(x=>x.split("", -1)).map(x=> Row(
x(1).toLong,
x(2).toLong,
x(3).toString.trim(),
x(4).toString.trim(),
x(5).toString.trim(),
x(6).toString.trim(),
x(7).toString.trim(),
x(8).toString.trim(),
x(9).toString.trim(),
x(10).toString.trim(),
x(11).toString.trim(),
x(12).toString.trim()
))
val dfData = sqlContext.createDataFrame(vRow.distinct(),vSchema)
val dfBlankRecords = dfData.filter(x => (
x.trim(col("FIELD_ADD_1")) == "" ||
x.trim(col("FIELD_ADD_2")) == "" ||
x.trim(col("FIELD_ADD_3")) == "" ||
x.trim(col("FIELD_ADD_4")) == ""
))
apache-spark
для большей наглядности. В строкеval vRow ...
вы делаетеx.split("", -1)
. Является ли пустая строка преднамеренной? Это разбивается на массив отдельных символов. - person Travis Hegner   schedule 21.06.2018>= 1.6
, есть лучшие методы для чтения текстовых файлов непосредственно в наборы данных. - person Travis Hegner   schedule 21.06.2018