取消
顯示的結果
而不是尋找
你的意思是:

當閱讀CSV如何設置時間戳格式

EmilianoParizz1”id=
新的因素

我有一個磚5.3集群在Azure上運行Apache火花測試盒框和Scala 2.11。

我想與一個定製的時間戳格式解析CSV文件,但我不知道哪個datetime格式火花使用模式。

我的CSV看起來像這樣:
時間戳、名稱、值02/07/2019 14:51:32.869-08:00 BatteryA, 0.25 02/07/2019 14:55:45.343-08:00, BatteryB, 0.50 02/07/2019 14:58:25.845-08:00, BatteryC, 0.34

我執行以下閱讀它:val csvDataFrame = sqlContext.read.format (csv) .option .option(“標題”、“true”) (“treatEmptyValuesAsNulls”、“true”) .option .option (“inferSchema”、“true”)(“模式”、“DROPMALFORMED”) .option (“timestampFormat”、“MM / dd / yyyy HH: MM: ss.SSSZZ”) .load(“路徑/ / file.csv”)

csvDataFrame.printSchema ()

但無論如何我用時間戳模式,第一列總是推斷為字符串。
csvDataFrame: org.apache.spark.sql。DataFrame時間戳字符串名稱:字符串值:雙

我不是一個Java / Scala開發人員和我新火花/磚。我找不到任何地方哪個datetime格式器火花使用解析值。

4回複4

mekkinen”id=
新的貢獻者二世

至少根據Pyspark文檔(https://spark.apache.org/docs/latest/api/python/pyspark.sql.html pyspark.sql.DataFrameReader):它說:

  • dateFormat——集表示日期格式的字符串。自定義日期格式按照格式
    java.text.SimpleDateFormat
    。這適用於日期類型。如果沒有設置,它使用默認值,
    yyyy-MM-dd
  • timestampFormat——設置字符串,表示一個時間戳格式。自定義日期格式按照格式
    java.text.SimpleDateFormat
    。這適用於時間戳的類型。如果沒有設置,它使用默認值,
    yyyy-MM-dd 'HH: mm: ss.SSSXXX

我可以想象,這些是相同的對於編寫scala。

DonatienTessier”id=
新的貢獻者三世

嗨@Emiliano Parizzi,

你可以解析後加載的時間戳文件使用withColumn (cf。https://stackoverflow.com/questions/39088473/pyspark-dataframe-convert-unusual-string-format-to-time..。

從pyspark。sql從pyspark.sql進口行。功能導入to_timestamp

(sc .parallelize([行(dt = ' 02/07/2019 14:51:32.869-08:00 '))) .toDF () .withColumn(“解析”,to_timestamp (“dt”、“MM / dd / yyyy HH: MM: ss.SSSXXX”)),告訴(假的))

+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - dt + | | | +解析- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - + | 02/07/2019 14:51:32.869-08:00 | 2019-02-07 22:51:32 | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - +

SteveDocherty”id=
新的貢獻者二世

#在python中:明確定義的模式,閱讀在CSV數據使用定義的模式和一個時間戳格式(和一個額外的列用於分區;這部分是可選的)csvSchema = StructType ([StructField(“時間戳”,TimestampType(),真的),StructField(“名字”,StringType(),真的),StructField(“價值”,倍增式(),真的)))

df =火花。讀\ . csv (file_path頭= True,多行= True,逃避=“\”“、模式= csvSchema timestampFormat = " MM / dd / yyyy HH: MM: ss。SSSZZ”) \ .withColumn(“年”,date_format(坳(“時間戳”)、“yyyy”) .cast (IntegerType ())) \ .withColumn(“月”,date_format(坳(“時間戳”)、“毫米”).cast (IntegerType ()))

顯示器(df)

wellington72019”id=
新的貢獻者二世

#在python中:明確定義的模式,閱讀在CSV數據使用模式和一個時間戳格式定義....

< a href = " http://thestoreguide.co。新西蘭奧克蘭/ orewa /麥當勞- orewa阿克勒說道- 0931 / " >麥當勞orewa < / >

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map