你也可以使用 .toDF 上的方法 desc formatted table 然后从Dataframe过滤。 DataframeAPI:scala> :paste spark.sql("desc formatted data_db.part_table") .toDF //convert to dataframe will have 3 columns col_name,data_type,comment .filter('col_name === "Location") //filter on colname .collect()(0)(1) .toStringResult: ``` String = hdfs://nn:8020/location/part_table
(or) `RDD Api:` ```
scala> :paste
spark.sql("desc formatted data_db.part_table")
.collect()
.filter(r => r(0).equals("Location")) //filter on r(0) value
.map(r => r(1)) //get only the location
.mkString //convert as string
.split("8020")(1) //change the split based on your namenode port..etc
``` `Result:` ```
String = /location/part_table
19/06/18 09:59:55 WARN util.Utils: Truncated the string representation of a plan since it was too large. This behavior can be adjusted by setting 'spark.debug.maxToStringFields' in SparkEnv.conf.
res1: Array[org.apache.spark.sql.Row] = Array([hdfs://nameservice1/my/path/to/table/store/part-00000-d439163c-9fc4-4768-8b0b-c963f5f7d3d2.snappy.parquet])
4条答案
按热度按时间i86rm4rw1#
你也可以使用
.toDF
上的方法desc formatted table
然后从Dataframe过滤。DataframeAPI:
scala> :paste spark.sql("desc formatted data_db.part_table") .toDF //convert to dataframe will have 3 columns col_name,data_type,comment .filter('col_name === "Location") //filter on colname .collect()(0)(1) .toString
Result:
```String = hdfs://nn:8020/location/part_table
deikduxw2#
在Pypark中没有找到答案
fcipmucu3#
dataframeapi中的df.inputfiles方法将打印文件路径。它返回组成此Dataframe的文件的尽力而为快照。
piah890a4#
您可以使用spark的表格读取功能:
spark.read.table("myDB.myTable").select(input_file_name).take(1)
将产生如下字符串:我曾经
take(1)
只需打印一行即可在此处显示结果。如果您想要所有的位置,您可能不想使用它。根据这个结果,您可以相应地解析字符串,以防只需要位置部分。