Pyspark: как преобразовать отметку времени unix в дату, когда я читаю CSV-файл - PullRequest
0 голосов
/ 25 марта 2020

У меня есть .csv, который выглядит следующим образом

Timestamp,   Name,    Value  
1577862435, BatteryA, 0.25  
1577915618, BatteryB, 0.50  
1577839734, BatteryC, 0.34

Я определяю схему

schema = StructType([
    StructField("timestamp", IntegerType(), True),
    StructField("Name", StringType(), True),
    StructField("Value", FloatType(), True)])

df = spark.read.format('csv').option("delimiter", "\t").schema(schema).load("myFile.csv")

Как я могу непосредственно прочитать отметку времени Unix в форме даты, пока Я читаю это?

1 Ответ

2 голосов
/ 25 марта 2020

Вы можете использовать TimestampType:

schema = StructType([
StructField("timestamp", TimestampType(), True),
StructField("Name", StringType(), True),
StructField("Value", FloatType(), True)])

df = spark.read.format('csv').option("delimiter", "\t").schema(schema).load("myFile.csv")

Обновление
Таким образом, очевидно, что вы не можете напрямую читать метку времени эпохи в TimestampType, это должно быть преобразован в задолго до этого.

Я предлагаю вам сделать:

schema = StructType([
StructField("timestamp", LongType(), True),
StructField("Name", StringType(), True),
StructField("Value", FloatType(), True)])

df = spark.read.format('csv').option("delimiter", "\t").schema(schema).load("myFile.csv")
df = df.withColumn("timestamp", df["timestamp"].cast(TimestampType()))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...