以下のコードは機能しており、テキストファイルからSparkデータフレームを作成します。ただし、ヘッダーオプションを使用して最初の列をヘッダーとして使用しようとしていますが、何らかの理由でそれができませんなぜだかわからない!ばかげているに違いないが、解決できない。
>>>from pyspark.sql import SparkSession
>>>spark = SparkSession.builder.master("local").appName("Word Count")\
.config("spark.some.config.option", "some-value")\
.getOrCreate()
>>>df = spark.read.option("header", "true")\
.option("delimiter", ",")\
.option("inferSchema", "true")\
.text("StockData/ETFs/aadr.us.txt")
>>>df.take(3)
以下を返します。
[Row(value = u'Date、Open、High、Low、Close、Volume、OpenInt ')、Row(value = u'2010-07-21,24.333,24.333,23.946,23.946,43321,0')、Row (value = u'2010-07-22,24.644,24.644,24.362,24.487,18031,0 ')]
>>>df.columns
以下を返します。
['値']
問題
問題は、_.text
_または_.csv
_ではなく_.load
_ API呼び出しを使用していることです。 。text api documentationを読むと、
def text(self, paths): """Loads text files and returns a :class:DataFrame whose schema starts with a string column named "value", and followed by partitioned columns if there are any. Each line in the text file is a new row in the resulting DataFrame. :param paths: string, or list of strings, for input path(s). df = spark.read.text('python/test_support/sql/text-test.txt') df.collect() [Row(value=u'hello'), Row(value=u'this')] """
。csvを使用したソリューション
_.text
_関数呼び出しを_.csv
_に変更します。
_df = spark.read.option("header", "true") \
.option("delimiter", ",") \
.option("inferSchema", "true") \
.csv("StockData/ETFs/aadr.us.txt")
df.show(2, truncate=False)
_
あなたに与えるはず
_+-------------------+------+------+------+------+------+-------+
|Date |Open |High |Low |Close |Volume|OpenInt|
+-------------------+------+------+------+------+------+-------+
|2010-07-21 00:00:00|24.333|24.333|23.946|23.946|43321 |0 |
|2010-07-22 00:00:00|24.644|24.644|24.362|24.487|18031 |0 |
+-------------------+------+------+------+------+------+-------+
_
。loadを使用したソリューション
_.load
_は、フォーマットオプションが定義されていない場合、ファイルが寄木細工形式であると想定します。したがって、フォーマットオプションを定義する必要があります
_df = spark.read\
.format("com.databricks.spark.csv")\
.option("header", "true") \
.option("delimiter", ",") \
.option("inferSchema", "true") \
.load("StockData/ETFs/aadr.us.txt")
df.show(2, truncate=False)
_
答えが役に立てば幸いです