Как заставить скрипт Scala выводить пользовательские типы столбцов в схеме csv / json? - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь определить схему при загрузке файла csv в мой SQLContext с использованием SparkSession.Обратите внимание, что я не хочу использовать class здесь, поскольку я пытаюсь вывести схему файла данных, как только она будет загружена, поскольку у меня нет никакой информации о типах данных или именах столбцов файла перед его загрузкой.

Вот что я пробую в Scala:

package example
import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
import java.io.File
import org.apache.spark.sql.SparkSession
//import sqlContext.implicits._


object SimpleScalaSpark {
  def main(args: Array[String]) {
    //val conf = new SparkConf().setAppName("Simple Application").setMaster("local[*]")
    val spark = SparkSession
      .builder()
      .master("local[*]")
      .appName("Spark Hive Example")
      .config("spark.sql.warehouse.dir", "local")
      .getOrCreate()
    //val etl1Rdd = spark.sparkContext.wholeTextFiles("etl1.json").map(x => x._2)
    val jsonTbl = spark.sqlContext.read.format("org.apache.spark.csv")
      .option("header", true)
      .option("inferSchema", true)
      .option("dateFormat","MM/dd/yyyy HH:mm")
      .csv("s1.csv")

    // print the inferred schema
    jsonTbl.printSchema
  }
}

Я могу получить DateTime, Integer, Double, String в качестве типов данных для моегофайл.Но я хочу реализовать пользовательские типы данных, основанные на моих собственных шаблонах regex, таких как поля, такие как SSN, VIN-ID, PhoneNumber и т. Д., Которые имеют фиксированный шаблон, который можно обнаружить с помощью regex.Это сделало бы процесс извлечения схемы более точным и точным.Например, предположим, что у меня есть столбец, который содержит данные, состоящие из 5 или более алфавитов и 2 или более чисел, я могу сказать, что этот столбец имеет тип ID .

Есть идеи, можно ли сделать это с помощью Scala / Spark?Пожалуйста, дайте мне знать часть реализации, если это возможно, или источник технической документации.

...