2017-02-03 4 views
0

Я пытаюсь прочитать в схеме из hdfs для загрузки в мой dataframe. Это позволяет обновлять схему и находиться вне кода Spark Scala. Мне было интересно, что лучший способ сделать это? Ниже приведено то, что у меня есть внутри кода.Обновление схемы Dataframe Чтение Spark Scala

val schema_example = StructType(Array(
    StructField("EXAMPLE_1", StringType, true), 
    StructField("EXAMPLE_2", StringType, true), 
    StructField("EXAMPLE_3", StringType, true)) 

def main(args: Array[String]): Unit = { 
    val df_example = get_df("example.txt", schema_example) 
} 

def get_df(filename: String, schema: StructType): DataFrame = { 
    val df = sqlContext.read 
     .format("com.databricks.spark.csv") 
     .option("delimiter","~") 
     .schema(schema) 
     .option("quote", "'") 
     .option("quoteMode", "ALL") 
     .load(filename) 
    df.select(df.columns.map(c => trim(col(c)).alias(c)): _*) 
    } 
+0

Вы считаете, используя паркетную форму данных, которая имеет как схему, так и данные в файле и поддерживает отличное сжатие и оптимизацию? –

ответ

0

Лучше было бы прочитать схему из файла конфигурации HOCON, которая может быть обновлена ​​по мере необходимости.

schema[ 
    { 
    columnName = EXAMPLE_1 
    type = string 
    }, 
    { 
    columnName = EXAMPLE_2 
    type = string 
    }, 
    { 
    columnName = EXAMPLE_3 
    type = string 
    } 
] 

Их можно прочитать здесь, используя ConfigFactory. Это будет более лучший и чистый способ поддерживать файловую схему.

Смежные вопросы