Обычно гранулярность меток времени указывается в секундах, поэтому я не думаю, что существует прямой метод сохранения гранулярности в миллисекундах.
В pyspark есть функция unix_timestamp
, которая:
unix_timestamp(timestamp=None, format='yyyy-MM-dd HH:mm:ss')
Конвертировать строку времени с данным шаблоном (
'yyyy-MM-dd HH:mm:ss'
по умолчанию) в метку времени Unix ( в секундах ), используя часовой пояс по умолчанию и локаль по умолчанию, возвращают ноль в случае неудачи.blockquote>if `timestamp` is None, then it returns current timestamp. >>> spark.conf.set("spark.sql.session.timeZone", "America/Los_Angeles") >>> time_df = spark.createDataFrame([('2015-04-08',)], ['dt']) >>> time_df.select(unix_timestamp('dt', 'yyyy-MM-dd').alias('unix_time')).collect() [Row(unix_time=1428476400)] >>> spark.conf.unset("spark.sql.session.timeZone")
Пример использования:
import pyspark.sql.functions as F res = df.withColumn(colName, F.unix_timestamp(F.col(colName), \ format='yyyy-MM-dd HH:mm:ss.000').alias(colName) )
Что вы можете сделать, это разделить строку даты (
str.rsplit('.', 1)
), разделяя миллисекунды (например, создавая другой столбец) в ваш фрейм данных.РЕДАКТИРОВАТЬ
В вашем примере проблема в том, что время имеет тип string. Сначала вам нужно преобразовать его в тип
timestamp
: это можно сделать с помощью:res = time_df.withColumn("new_col", to_timestamp("dt", "yyyyMMdd-hh:mm:ss"))
Затем вы можете использовать
unix_timestap
res2 = res.withColumn("time", F.unix_timestamp(F.col("parsed"), format='yyyyMMdd-hh:mm:ss.000').alias("time"))
Наконец, чтобы создать столбцы с миллисекунды:
res3 = res2.withColumn("ms", F.split(res2['dt'], '[.]').getItem(1))
Добавить autocomplete="off"
к Вашему <input>
элементы. Работы во всех современных браузерах, IIRC.
Я предположил бы, что браузеры сохраняют поля формы, когда форма отправлена. Что при использовании Ajax для получения значения поля пароля, отправьте его, затем очистите поле? Форма на самом деле никогда не отправлялась бы, таким образом, браузер никогда не будет, теоретически, иметь возможности сохранить значения.
AFAIK, замаскированные поля (которые показывают '*' вместо символа, который Вы вводите) никогда не сохраняются для автоматического заполнения. Вы хотите препятствовать тому, чтобы пользователь помнил пароль на Ваш сайт в сохраняющих пароль средствах браузера?
Дайте вводу пароля случайным образом сгенерированное имя, которое только можно распознать. Хранилище, которые называют, например, в скрытом поле, и затем используют это для получения вставленного пароля. Тот путь, даже если браузер действительно кэширует пароль, он не сможет возвратить его в следующий раз пользовательские посещения.
Ваши пользователи будут, вероятно, в этой точке продолжать кэшировать пароли на postit на стороне монитора, но это - действительно совершенно другое сражение.
Тот же метод работает хорошо против спама, так как большинство ботов полагается на нахождение общих имен полей.