Python PySpark测试:构造由结构数组组成的测试数据

Python PySpark测试:构造由结构数组组成的测试数据,python,apache-spark,pyspark,apache-spark-sql,pyspark-dataframes,Python,Apache Spark,Pyspark,Apache Spark Sql,Pyspark Dataframes,我想在PySpark中为我的单元测试生成一些测试数据。输入行中的一个字段是结构数组:basket:array。实现它的最佳方法是什么?这里有一种方法使用python和两个助手函数来生成随机数据: 从pyspark.sql.types导入* 从随机范围,均匀 数组大小=2 def创建行(数组大小): 返回([{“价格”:统一(1.01000.0),“产品id”:randrange(10)+1}用于范围内(数组大小)],) def生成数据(数据大小): 返回[为范围内的数据创建行(数组大小)] #创

我想在PySpark中为我的单元测试生成一些测试数据。输入行中的一个字段是结构数组:
basket:array
。实现它的最佳方法是什么?

这里有一种方法使用python和两个助手函数来生成随机数据:

从pyspark.sql.types导入*
从随机范围,均匀
数组大小=2
def创建行(数组大小):
返回([{“价格”:统一(1.01000.0),“产品id”:randrange(10)+1}用于范围内(数组大小)],)
def生成数据(数据大小):
返回[为范围内的数据创建行(数组大小)]
#创建5行
行=生成_数据(5)
#字符串模式
schema=“basket:array”
#静态类型模式
#schema=StructType([
#StructField('basket',
#阵列类型(
#结构类型(
#                           [
#StructField('price',DoubleType()),
#StructField('product_id',StringType()),
#                           ]
#                     )
#                 )
#             )])
df=spark.createDataFrame(行,模式)
测向显示(10,假)
# +--------------------------------------------------+
#|篮子|
# +--------------------------------------------------+
# |[[61.40674765573896, 9], [5.994467505720648, 7]]  |
# |[[1.1388272509974906, 10], [47.32070824053193, 3]]|
# |[[42.423106687845795, 2], [70.99107361888588, 4]] |
# |[[50.019594333009806, 8], [63.51239439900147, 4]] |
# |[[68.15711374321089, 9], [70.06617125228864, 10]] |
# +--------------------------------------------------+
  • 创建_行:将生成包含数组大小项的新行(此处表示为元组)<代码>价格的值范围为1.0-100.0,
    产品id
    的值范围为1-10,请随意修改相应的边界。此外,我们还使用python字典处理数组的每一项(product_id-price对)

  • 生成数据:调用
    创建行
    数据大小时间,并将随机生成的行返回到列表中


sumek能否就以下解决方案提供一些反馈?你能试着运行它吗?嗨,abiratsis,谢谢你的解决方案,但我不再在那个系统上工作了…嗨,sumek,当然没问题。谢谢你让我知道