我需要创建嵌套列表。我的txt数据就像
(telophone number,time,delta time,lat,long)
...
0544144,23,86,40.761650,29.940929
0544147,23,104,40.768749,29.968599
0545525,20,86,40.761650,29.940929
0538333,21,184,40.764679,29.929543
05477900,21,204,40.773071,29.975010
0561554,23,47,40.764694,29.927397
...
我的代码也是
from pyspark import SparkContext
sc = SparkContext()
rdd_data = sc.textFile("data2.txt")
rdd_data_1 = rdd_data.map(lambda line: line.split(","))
tel0 = rdd_data_1.map(lambda line: int(line[0]))
time1 = rdd_data_1.map(lambda line: int(line[1]))
deltaTime2 = rdd_data_1.map(lambda line: int(line[2]))
lat3 = rdd_data_1.map(lambda line: float(line[3]))
lon4 = rdd_data_1.map(lambda line: float(line[4]))
tel0_list =tel0.collect()
time1_list =time1.collect()
deltaTime2_list =deltaTime2.collect()
lat3_list =lat3.collect()
lon4_list =lon4.collect()
正如你所看到的,每列都有一个平均值;电话,时间,增量时间等。但每行也必须使用一个列表。 如果我想看第一个电话号码;
print tel0_list[0]
输入:
0544144
它也有效。但我需要用它创建每个行列表。
例如
Data []列表可以是每行的lıst。如果我想看数据[1],我的输入必须像
(0544147,23,104,40.768749,29.968599)
我该怎么做?
由于
答案 0 :(得分:0)
由于您的文本文件采用csv
格式,因此如果您使用Spark 2.x,则可以轻松将其加载到数据框中:
from pyspark.sql import SparkSession
from pyspark.sql.types import StructType, StructField, IntegerType, DoubleType
spark = SparkSession.builder.getOrCreate()
schema = StructType([
StructField("tel", IntegerType(), True),
StructField("time", IntegerType(), True),
StructField("deltatime", IntegerType(), True),
StructField("lat", DoubleType(), True),
StructField("long", DoubleType(), True)
])
data = spark.read.csv("data2.txt", header=False, schema=schema)
然后您可以使用以下方式访问数据:
>>> data.take(1)
[Row(tel=544144, time=23, deltatime=86, lat=40.76165, long=29.940929)]
注意:访问Spark中的数据[1]没有任何意义,因为它是一个分布式系统。