pyspqrk sql配置单元表中的错误数据

fruv7luv  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(268)

我正在尝试使用一个在pyspark中有25亿条记录的配置单元表。我假设表中有一些格式不正确或“不好”的数据。我将spark版本1.6.2与python版本2.6.6配合使用:

from pyspark import SparkContext, SparkConf
from pyspark.sql import HiveContext
with SparkContext() as sc:
    tbl = “mydb.mytable”
    hc = HiveContext(sc)
    df = hc.table(tbl)

看table。如果我想跑

df.take(5)

我遇到一个valueerror异常,并且

df.count()

无限期挂起。但是,如果我在表格中示例:

dfsamp = df.sample(False, 0.0000001, 42)

我得到一个大约有220行的Dataframe,看起来没有任何问题。从hivecli访问完整表似乎可以正常工作。我假设有一些spark由于某种原因无法处理的记录。我想知道在将配置单元表作为pysparkDataframe加载之后,是否有某种方法来过滤它,以便只保留“好”行。或者,是否有某种方法可以在将配置单元表加载到pyspark之前对其进行预处理,以确保它只包含“良好”数据?感谢任何帮助/见解。

b09cbbtk

b09cbbtk1#

结果在日期列中有一些日期超出了范围。
如果我用

df = hc.sql("""
SELECT *
  FROM {0}
  WHERE date_col_1 BETWEEN '1970-01-01' AND '2029-12-31'
    AND date_col_2 BETWEEN '1970-01-01' AND '2029-12-31'
.
.
.
""".format(tbl)

那就没有问题了。

相关问题