小编PR1*_*012的帖子

PySpark数据帧将异常字符串格式转换为Timestamp

我通过Spark 1.5.0使用PySpark.对于datetime值,我在列的行中有一个不常见的String格式.它看起来像这样:

Row[(daytetime='2016_08_21 11_31_08')]
Run Code Online (Sandbox Code Playgroud)

有没有办法将这种非正统yyyy_mm_dd hh_mm_dd格式转换为时间戳?最终可能出现的问题

df = df.withColumn("date_time",df.daytetime.astype('Timestamp'))
Run Code Online (Sandbox Code Playgroud)

我原以为像星火SQL函数regexp_replace可以工作,但我当然需要更换 _-在日期一半_:在部分时间.

我想我可以在2中拆分列,substring并从时间结束后向后计数.然后单独执行'regexp_replace',然后连接.但这似乎很多操作?有没有更简单的方法?

timestamp dataframe apache-spark apache-spark-sql pyspark

23
推荐指数
2
解决办法
3万
查看次数

PySpark 1.5和MSSQL jdbc

我在Cloudera YARN上的Spark 1.5上使用PySpark,在Centos 6 Machines上使用Python 3.3.SQL Server实例是SQL Server Enterprise 64位.SQL Server驱动程序如下所示; sqljdbc4.jar; 我已经添加到我的.bashrc了

export SPARK_CLASSPATH="/var/lib/spark/sqljdbc4.jar"
export PYSPARK_SUBMIT_ARGS="--conf spark.executor.extraClassPath="/var/lib/spark/sqljdbc4.jar" --driver-class-path="/var/lib/spark/sqljdbc4.jar" --jars="/var/lib/spark/sqljdbc4.jar" --master yarn --deploy-mode client"
Run Code Online (Sandbox Code Playgroud)

当我启动Spark时,我可以看到确认

SPARK_CLASSPATH was detected (set to '/var/lib/spark/sqljdbc4.jar')
Run Code Online (Sandbox Code Playgroud)

我有一个看起来像这个架构的数据框

root
 |-- daytetime: timestamp (nullable = true)
 |-- ip: string (nullable = true)
 |-- tech: string (nullable = true)
 |-- th: string (nullable = true)
 |-- car: string (nullable = true)
 |-- min_dayte: timestamp (nullable = true)
 |-- max_dayte: timestamp (nullable = true)
Run Code Online (Sandbox Code Playgroud)

我已经在我的MS SQL服务器中创建了一个名为'dbo.shaping'的空表,其中3个时间戳列是datetime2(7),其他列是nvarchar(50).

我尝试使用这个从PySpark导出数据帧

properties = …
Run Code Online (Sandbox Code Playgroud)

sql-server jdbc apache-spark pyspark

12
推荐指数
1
解决办法
1541
查看次数

PySpark 1.5如何从几秒钟将时间戳截断到最近的分钟

我正在使用PySpark.我在数据帧('canon_evt')中有一个列('dt'),这是一个时间戳.我试图从DateTime值中删除秒.它最初是从镶木地板中读取的.然后我尝试将其转换为Timestamp via

canon_evt = canon_evt.withColumn('dt',to_date(canon_evt.dt))
canon_evt= canon_evt.withColumn('dt',canon_evt.dt.astype('Timestamp'))
Run Code Online (Sandbox Code Playgroud)

然后我想删除秒.我试过'trunc','date_format',甚至尝试将各个部分拼接在一起,如下所示.我认为它需要某种map和lambda组合,但我不确定Timestamp是否是一种合适的格式,以及它是否可以摆脱秒.

canon_evt = canon_evt.withColumn('dyt',year('dt') + '-' + month('dt') +
    '-' + dayofmonth('dt') + ' ' + hour('dt') + ':' + minute('dt'))

[Row(dt=datetime.datetime(2015, 9, 16, 0, 0),dyt=None)]
Run Code Online (Sandbox Code Playgroud)

python datetime apache-spark apache-spark-sql pyspark

10
推荐指数
2
解决办法
8767
查看次数

加速Django表格将大型(500k obs)CSV文件上传到MySQL DB

Django表大约有430,000个obs和230mb文件; \来自一个平面的CSV文件,详细信息如下所示在\ MODELS.PY中.我考虑过使用CSV读取器的块,但我认为填充MySQL表的Processor\function是我的挂机; 这需要20个小时+ \我怎么加速这个?

class MastTable(models.Model):
    evidence = models.ForeignKey(Evidence, blank=False)
    var2 = models.CharField(max_length=10, blank=True, null=True)
    var3 = models.CharField(max_length=10, blank=True, null=True)
    var4 = models.CharField(max_length=10, blank=True, null=True)
    var5 = models.CharField(max_length=10, blank=True, null=True)
    var6 = models.DateTimeField(blank=True, null=True)
    var7 = models.DateTimeField(blank=True, null=True)
    var8 = models.DateTimeField(blank=True, null=True)
    var9 = models.DateTimeField(blank=True, null=True)
    var10 = models.DateTimeField(blank=True, null=True)
    var11 = models.DateTimeField(blank=True, null=True)
    var12 = models.DateTimeField(blank=True, null=True)
    var13 = models.DateTimeField(blank=True, null=True)
    var14 = models.CharField(max_length=500, blank=True, null=True)
    var15 = models.CharField(max_length=500, blank=True, null=True)
    var16 = models.CharField(max_length=50, blank=True, null=True)
    var17 = …
Run Code Online (Sandbox Code Playgroud)

python mysql csv django

2
推荐指数
1
解决办法
803
查看次数

PySpark 1.5 Dataframe 中新列的 Groupby Sum

我正在尝试使用 groupBy 和 sum (使用 PySpark 1.5)在 Spark Dataframe 中创建一个新列(“newaggCol”)。我的数字列已转换为 Long 或 Double。用于形成 groupBy 的列是 String 和 Timestamp。我的代码如下

df= df.withColumn("newaggCol",(df.groupBy([df.strCol,df.tsCol]).sum(df.longCol)))
Run Code Online (Sandbox Code Playgroud)

我对错误的回溯就到了那一行。并指出:

ValueError: Cannot convert column into bool: please use '&' for 'and',     '|' for 'or', '~' for 'not' when building DataFrame boolean expressions.
Run Code Online (Sandbox Code Playgroud)

我觉得我一定是错误地调用了这些函数?

python sql apache-spark apache-spark-sql pyspark

2
推荐指数
1
解决办法
8844
查看次数