spark读取数据的时候常见一个需求,需要读入文件所在路径,例如读入数据的时候需要分区路径(通常是日期)。
其实hive中就有内置函数可以直接读入文件路径 INPUT__FILE__NAME,只不过通常不太用,所以spark-sql里也有函数可以直接读取部分文件信息的。需要用到spark2.0.
//需要引入 import org.apache.spark.sql.functions
dataset.withColumn("path",functions.input_file_name())
import java.util.{Calendar, Date}
import com.aotain.iptv.util.DateFormat
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.{SparkSession, functions}
import org.apache.spark.sql.types.{DataTypes, StructField, StructType}
object ReadFilePath {
def main(args: Array[String]): Unit = {
//读取Spark Application 的配置信息
val sparkConf = new SparkConf()
//设置SparkApplication名称
.setAppName("ModuleSpark Application")
.setMaster("local[2]")
val sc = SparkContext.getOrCreate(sparkConf)
val spark = SparkSession.builder.config(sparkConf).get