我通过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',然后连接.但这似乎很多操作?有没有更简单的方法?
我在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) 我正在使用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) 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) 我正在尝试使用 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)
我觉得我一定是错误地调用了这些函数?