我有一个很长的模式,我想返回字符串
import org.apache.spark.SparkConf;
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
...
SparkSession spark = SparkSession.builder().config(new SparkConf().setAppName("YourApp").setMaster("local")).getOrCreate();
Dataset<Row> parquetData = spark.read().parquet("/Users/demo/test.parquet");
String schemaString = parquetData.schema().simpleString();
问题是生成的模式看起来像(见“10个字段”):
struct<test:struct<countryConfidence:struct<value:double>,... 10 more fields> etc etc>
使用
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.12</artifactId>
<version>3.2.4</version>
</dependency>
是否有一些配置选项可以使用,这意味着.simpleString
不截断?我试过parquetData.schema().toDDL()
,但它不能打印我需要的格式。
1条答案
按热度按时间u3r8eeie1#
如果你深入了解
simpleString
方法,你可以看到Spark使用了truncatedString
,其中SQLConf.get.maxToStringFields
作为第三个参数传递。此配置的定义如下所述:
Solution
将
spark.sql.debug.maxToStringFields
调整为大于25的数字,例如50(任意,但应根据您的用例确定),例如:祝你好运!