To_timestamp добавляет +5:30 к моей временной метке STRINGJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 To_timestamp добавляет +5:30 к моей временной метке STRING

Сообщение Anonymous »


Я создал следующую функцию, используя набор данных Spark, которая преобразует "даты (гггг-мм-дд)"/"метки времени" на основе STRING в тип данных TIMESTAMP -

/** * Преобразует строку date/datetime в тип данных Timestamp. * * @param df dataframe * Столбцы временных меток @param timestampCols * @return {@link Dataset} измененный фрейм данных */ public static Dataset ConvertTimestampColumns(Dataset df, List timestampCols) { Набор данных модифицированныйDf = df; for (String columnsName: df.columns()) { если (timestampCols.contains(columnName)) { модифицированныйDf = модифицированныйDf.withColumn(имя столбца, to_timestamp(df.col(columnName))); } } модифицированныйDf.show(); вернуть модифицированныйDf; } Но когда я это тестирую -

@Test общественный недействительный testConvertTimestampColumns () { SharedJavaSparkContext javaSparkContext = новый SharedJavaSparkContext (); Набор данных df; попробуйте (SparkSession spark = new SparkSession(javaSparkContext.sc())) { Данные List = Arrays.asList( RowFactory.create(1, "2022-01-01", "2019-03-26T20:28:32.000Z") ); Поля List = Arrays.asList( DataTypes.createStructField("id", DataTypes.IntegerType, true), DataTypes.createStructField("date_col1", DataTypes.StringType, true), DataTypes.createStructField("date_col2", DataTypes.StringType, true) ); Схема StructType = DataTypes.createStructType(поля); df = spark.createDataFrame(данные, схема); } List timestampCols = Arrays.asList("date_col1", "date_col2"); // Конвертируем timestampCols в TimestampType Dataset resultDF = FactSalesforceCRMETLUtils.convertTimestampColumns(df, timestampCols); // Проверяем схему и преобразованные значения Assert.assertEquals(DataTypes.TimestampType, resultDF.schema().fields()[1].dataType()); Assert.assertEquals(DataTypes.TimestampType, resultDF.schema().fields()[2].dataType()); Assert.assertEquals("2022-01-01 00:00:00.0", resultDF.first().getAs("date_col1").toString()); Assert.assertEquals("2019-03-26 20:28:32.0", resultDF.first().getAs("date_col2").toString()); } Мое последнее утверждение не удалось, поскольку функция добавляет +5:30 к предоставленной метке времени STRING.

Я пробовал другие функции, такие как to_utc_timestamp , from_utc_timestamp, предоставляемые Spark, но ничего не помогает.

Нужно ли мне создавать UDF, чтобы решить эту проблему? Или есть что-то внутреннее в Spark, которое может решить мою проблему?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»