如何解决我想将架构元数据作为参数从Spark数据框/数据集传递数据框名称作为参数
我想将模式(元数据)作为来自Spark数据框/数据集的参数传递。
我正在使用spark 2.x
代码:(示例)
//定义如下元数据。
val df_emp_metadata = StructType(
List(
StructField("emp_id",StringType,true),StructField("emp_hier_dt",DateType,StructField("dept_id",IntegerType,true)
))
val df_dept_metadata = StructType(
List(
StructField("dept_id",StructField("dept_name",true)
))
我想在执行Spark-Submit时将df_emp_metadata / df_dept_metadata作为参数传递,并在下面的模式中将其作为变量传递。
val meta_Data = arg(0) //(df_emp_metadata or df_dept_metadata from Spark-Submit)
val readFileIn = spark.sqlContext.read
.format("csv")
.schema($meta_Data)
.load("data/source_file.csv")
Spark不允许将数据框名称作为参数传递。
请建议在Spark / Scala编程中是否还有其他替代方法。
解决方法
简单的if-else
语句。您可以通过放置1
和2
来选择它。
val argument = arg(0)
val schema = if (argument == "1") df_emp_metadata else df_dept_metadata
val readFileIn = spark.sqlContext.read
.format("csv")
.schema(schema)
.load("data/source_file.csv")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。