我有一个表,其中我有一个列组。
Groups -------- |GroupA | |GroupB | |GroupC | |GroupA | |GroupB | --------
字符串假设我有2000条GroupA记录,1000条GroupB记录和1000条GroupC记录。此外,这些值每天都会变化。我如何使用SQL或pyspark从中提取5%的数据。我主要是在pyspark中寻找一些东西。
juud5qan1#
**场景1:**如果您希望从整个数据集中抽取5%的样本。
from pyspark.sql import SparkSession spark = SparkSession.builder \ .master("local[1]") \ .appName("SparkByExamples.com") \ .getOrCreate() df=spark.range(100) print(df.sample(0.05).collect())
字符串0.05占数据的5%。
场景2:如果你想要每个组的5%:
def sample_n_per_group(n, *args, **kwargs): def sample_per_group(pdf): return pdf.sample(n, *args, **kwargs) return sample_per_group df = spark.createDataFrame( [ (1, 1.0), (1, 2.0), (2, 3.0), (2, 5.0), (2, 10.0) ], ("id", "v") ) (df.groupBy("id") .applyInPandas( sample_n_per_group(2, random_state=2), schema=df.schema ) )
型参考号:Choosing random items from a Spark GroupedData Object
1条答案
按热度按时间juud5qan1#
**场景1:**如果您希望从整个数据集中抽取5%的样本。
字符串
0.05占数据的5%。
场景2:如果你想要每个组的5%:
型
参考号:Choosing random items from a Spark GroupedData Object