Python 从OpenCelliD数据库获取一个国家的所有手机发射塔

Python 从OpenCelliD数据库获取一个国家的所有手机发射塔,python,pyspark,bigdata,geocoding,pyspark-sql,Python,Pyspark,Bigdata,Geocoding,Pyspark Sql,我已经下载了的数据集。这是一个巨大的csv文件,包含以下字段: 无线电、mcc、网络、面积、单元、单元、lon、lat、范围、样本、可更改、创建、更新、平均信号 我想得到所有“特定国家的手机发射塔”。有一件事我知道,每个国家都有自己的“mcc”,例如 我正在使用spark分析数据。我的代码如下: from pyspark import SparkContext, SparkConf from pyspark.sql import SQLContext # create Spark contex

我已经下载了的数据集。这是一个巨大的csv文件,包含以下字段:

无线电、mcc、网络、面积、单元、单元、lon、lat、范围、样本、可更改、创建、更新、平均信号

我想得到所有“特定国家的手机发射塔”。有一件事我知道,每个国家都有自己的“mcc”,例如

我正在使用spark分析数据。我的代码如下:

from pyspark import SparkContext, SparkConf
from pyspark.sql import SQLContext

# create Spark context with Spark configuration
conf = SparkConf().setAppName("Opencellid country filter")
sc = SparkContext(conf=conf)

sqlContext = SQLContext(sc)


df = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").load("cell_towers.csv")

mapped_data = df.where(df['mcc'] == '470').collect()

fp = open("cell_tower_output.csv", "w")
writer = csv.writer(fp, dialect="excel")
writer.writerows(mapped_data)
fp.close()

我已经为我正在搜索的一个特定县(通过过滤mcc)获得了199K+行。一个国家有可能拥有超过199k个以上的手机发射塔吗?我在spark代码中做了什么错误吗?

首先尝试按国家分组和计数(
df.groupBy('mcc').count()
),然后检查199k与其他国家相比是否适用于孟加拉国。这些字段中是否有任何字段可用于检查重复记录?这表明全世界有几百万人,这确实使孟加拉国的20万人看起来很多。(另外,你完全不需要Spark来争论几百万行——如果你有足够的RAM,Python和R就可以了,或者你可以用awk之类的工具对CSV进行预过滤)我曾在其他两个国家尝试过,它们的行数大致相同。这也是我在R中得到的结果。这使得孟加拉国在记录数量上处于第76百分位(似乎太高),但在最大的MCC中只有约3%(似乎合理)。所以-我认为你的Spark代码是正确的,但是关于这个数据集可能还有更多需要了解的地方。谢谢你的回复。我做了一些研究,发现我的代码给出了正确的行数。尝试先按国家分组和计数(
df.groupBy('mcc').count()
)然后检查199k与其他国家相比是否适用于孟加拉国可能是有用的。这些字段中是否有任何字段可用于检查重复记录?这表明全世界有几百万人,这确实使孟加拉国的20万人看起来很多。(另外,你完全不需要Spark来争论几百万行——如果你有足够的RAM,Python和R就可以了,或者你可以用awk之类的工具对CSV进行预过滤)我曾在其他两个国家尝试过,它们的行数大致相同。这也是我在R中得到的结果。这使得孟加拉国在记录数量上处于第76百分位(似乎太高),但在最大的MCC中只有约3%(似乎合理)。所以-我认为你的Spark代码是正确的,但是关于这个数据集可能还有更多需要了解的地方。谢谢你的回复。我做了一些研究,发现我的代码给出了正确的行数。