Я использую pyspark (1.6) и elasticsearch-hadoop (5.1.1). Я получаю мои данные из elasticsearch в формат РДД с помощью:Pyspark преобразование rdd в dataframe с нулями
es_rdd = sc.newAPIHadoopRDD(
inputFormatClass="org.elasticsearch.hadoop.mr.EsInputFormat",
keyClass="org.apache.hadoop.io.NullWritable",
valueClass="org.elasticsearch.hadoop.mr.LinkedMapWritable",
conf=es_read_conf)
Здесь es_read_conf только словарь моего ES кластера, так как СБН объект SparkContext. Это отлично работает, и я получаю объекты rdd в порядке.
Я хотел бы, чтобы преобразовать это dataframe используя
df = es_rdd.toDF()
, но я получаю ошибку:
ValueError: Some of types cannot be determined by the first 100 rows, please try again with sampling
Давать метод toDF а результаты SampleSize в одной и той же ошибки. Из того, что я понимаю, это происходит потому, что pyspark не может определить тип каждого поля. Я знаю, что в моем кластере elasticsearch есть поля, которые являются нулевыми.
Каков наилучший способ конвертировать это в dataframe?