小编Ish*_*han的帖子

where子句在spark sql数据框中不起作用

我创建了一个包含 3 列的数据框:zip、lat、lng

我想选择 zip = 00650 的 lat 和 lng 值

所以,我尝试使用:

sqlContext.sql("select lat,lng from census where zip=00650").show()
Run Code Online (Sandbox Code Playgroud)

但它返回 ArrayOutOfBound Exception 因为它没有任何值。如果我删除 where 子句,它运行良好。

有人可以解释一下我做错了什么吗?

更新:

数据框架构:

root 
|-- zip: string (nullable = true) 
|-- lat: string (nullable = true) 
|-- lng: string (nullable = true)
Run Code Online (Sandbox Code Playgroud)

前 10 行是:

+-----+---------+-----------+
|  zip|      lat|        lng|
+-----+---------+-----------+
|00601|18.180555| -66.749961|
|00602|18.361945| -67.175597|
|00603|18.455183| -67.119887|
|00606|18.158345| -66.932911|
|00610|18.295366| -67.125135|
|00612|18.402253| -66.711397|
|00616|18.420412| -66.671979|
|00617|18.445147| -66.559696|
|00622|17.991245| -67.153993|
|00623|18.083361| -67.153897|
|00624|18.064919| -66.716683|
|00627|18.412600| -66.863926| …
Run Code Online (Sandbox Code Playgroud)

sql scala apache-spark

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

在 Scala-js 中从 url 中提取字段

假设我有一个像这样的网址:

https://example.com/myproject/index-dev.html?_ijt=hsdlgh8h5g8hh489sajoej&a=102&b=a%20m&c=45&d=all&e=all
Run Code Online (Sandbox Code Playgroud)

或者它可能是本地主机上的网页,例如:

localhost:63342/my project/index-dev.html?_ijt=hsdlgh8h5g8hh489sajoej&a=102&b=a%20m&c=45&d=all&e=all
Run Code Online (Sandbox Code Playgroud)

我必须从二维数组中的这些 url 中提取查询字段(出现在“?”之后),如下所示:

_ijt    |    hsdlgh8h5g8hh489sajoej
a       |    102
b       |    a m
c       |    45
d       |    all
e       |    all
Run Code Online (Sandbox Code Playgroud)

请注意,在“b”字段中,我已将“%20”替换为空格。_ijt、a、b、c、d、e 等字段的数量可能会有所不同,它们的名称例如“a”可以是“城市”。到目前为止,我已经使用正则表达式提取了 '?' 之后的部分。然后使用 split("&") 方法将字符串拆分为多个字符串。代码 -

val url=localhost:63342/my project/index-dev.html?_ijt=hsdlgh8h5g8hh489sajoej&a=102&b=a%20m&c=45&d=all&e=all
val pattern="""(http|htpps)([A-Za-z0-9\:\/\%\-\.]*)\?""".r
val temp_url=pattern.replaceFirstIn(url,"")
val fields=temp_url.split("&")
println(fields.foreach(println))
Run Code Online (Sandbox Code Playgroud)

输出是:

_ijt=hsdlgh8h5g8hh489sajoej
a=102
b=a%20m
c=45
d=all
e=all
Run Code Online (Sandbox Code Playgroud)

但这似乎不是执行此操作的正确方法。有什么帮助吗?

scala.js

4
推荐指数
1
解决办法
1016
查看次数

使用 Spark scala 中另一列的值将行值转换为列

我正在尝试将行中的值与其另一列中的值转换为不同的列。例如 -

输入数据框就像 -

+-----------+
| X | Y | Z |
+-----------+
| 1 | A | a |
| 2 | A | b |
| 3 | A | c |
| 1 | B | d |
| 3 | B | e |
| 2 | C | f |
+-----------+
Run Code Online (Sandbox Code Playgroud)

输出数据框应该是这样的 -

+------------------------+
| Y | 1    | 2    | 3    |
+------------------------+
| A | a    | b    | c    |
| B …
Run Code Online (Sandbox Code Playgroud)

scala apache-spark apache-spark-sql

4
推荐指数
1
解决办法
6865
查看次数

xml2csv 包错误 '_IterParseIterator' 对象没有属性 'next'

我正在使用 xmlutils 包将 xml 文件转换为 csv。我的代码如下:

from xmlutils.xml2csv import xml2csv as x
input_path='/media/ishan/Local Disk/doc.xml'
output_path='media/ishan/Local Disk/d.csv'
data=x(input_path,output_path,encoding='utf-8')
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常。但是当我输入:

data.convert(tag="sku")
Run Code Online (Sandbox Code Playgroud)

它显示以下错误:

AttributeError                            Traceback (most recent call last)
<ipython-input-27-f15935c368f9> in <module>()
----> 1 data.convert(tag="PIES")

/home/ishan/.local/lib/python3.5/site-packages/xmlutils/xml2csv.py in convert(self, tag, delimiter, ignore, noheader, limit, buffer_size, quotes)
 55 
 56                 # get to the root
---> 57                 event, root = self.context.next()
 58 
 59                 items = []

AttributeError: '_IterParseIterator' object has no attribute 'next'
Run Code Online (Sandbox Code Playgroud)

我无法理解我做错了什么。我对这个包完全陌生。为什么我收到这个错误?如果您可以建议任何其他将 xml 文件转换为 csv 的方法,这对我也有帮助。提前致谢。

python html-xml-utils

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

填写spark数据框列中缺少的日期

我有一个带有列的火花数据框 - 类型的"日期"和类型的timestamp"数量" long.对于每个日期,我都有一些数量的价值.日期按递增顺序排序.但是有一些日期缺失了.例如 - 当前df -

Date        |    Quantity
10-09-2016  |    1
11-09-2016  |    2
14-09-2016  |    0
16-09-2016  |    1
17-09-2016  |    0
20-09-2016  |    2
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,df有一些缺失的日期,如12-09-2016,13-​​09-2016等.我想在数量字段中为那些缺少的日期添加0,这样得到的df应该看起来像 -

Date        |    Quantity
10-09-2016  |    1
11-09-2016  |    2
12-09-2016  |    0
13-09-2016  |    0
14-09-2016  |    0
15-09-2016  |    0
16-09-2016  |    1
17-09-2016  |    0
18-09-2016  |    0
19-09-2016  |    0
20-09-2016  |    2
Run Code Online (Sandbox Code Playgroud)

任何有关此的帮助/建议将不胜感激.提前致谢.请注意,我在scala编码.

datetime scala apache-spark apache-spark-sql

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