我正在使用 Airflow 的 BigQueryOperator 用 write_disposition='WRITE_TRUNCATE' 填充 BQ 表。问题是,每次任务运行时,它都会将表架构和列模式从“必需”更改为“可空”。我使用的 create_disposition 是“CREATE_NEVER”。由于我的表是预先创建的,因此我不希望更改架构或列模式。使用 write_disposition='WRITE_APPEND' 可以解决该问题,但我的要求是使用 WRITE_TRUNCATE。知道 BigQueryOperator 为什么改变架构和模式吗?
当我尝试在大型数据集上使用 PERCENT_RANK() 时,它会给我一个错误。
SELECT 
  a2_lngram, 
  a2_decade, 
  a2_totalfreq, 
  a2_totalbooks, 
  a2_freq, a2_bfreq, 
  a2_arf, 
  c_avgarf, 
  d_arf, 
  oi, 
  PERCENT_RANK() OVER (ORDER BY d_arf DESC) plarf 
FROM [trigram.trigrams8]
使用目标表和AllowLargeResults 返回:
“查询执行期间超出资源。”
当我将结果限制为几百时,它运行得很好。
JobID:oticyproject1:job_PpTpmMXYETUMiM_2scGgc997JVg 数据集是公共的。
比方说,我有一个给定的一天音乐视频播放统计数据表格mydataset.stats(3B行,1M用户,6K艺术家).简化的架构是:UserGUID String,ArtistGUID String
我需要从行列枢轴/转的艺术家,这样的模式将是:
UserGUID字符串,Artist1诠释,Artist2诠释,... Artist8000诠释
与艺术家通过各自的用户播放次数
在如何将行转换为具有BigQuery/SQL中大量数据的列中的方法中提出了一种方法?以及如何在Google BigQuery中为数千个类别创建虚拟变量列?但看起来它不能扩展我的例子中的数字
我的例子可以缩放这种方法吗?
我正在尝试验证我的 google bigquery 表中的电子邮件地址。我正在使用以下查询来执行此操作,但 bigquery 抛出错误。我不确定我的代码有什么问题。我找到了用于验证以下故事的正则表达式:-电子邮件地址中允许使用哪些字符?
select email
FROM my table
WHERE REGEXP_CONTAINS(email, regex)
这里的正则表达式是
我正在通过流媒体进行插入。在用户界面中,我可以看到以下行数:
有没有办法通过 API 获取它?当前当我这样做时:
from google.cloud import bigquery
client = bigquery.Client()
dataset = client.dataset("bqtesting")
table = client.get_table(dataset.table('table_streaming'))
table.num_rows
0
显然 0 不是我想要得到的数字。从 API 文档中可以看出:
numRows unsigned long [仅输出] 此表中的数据行数,不包括流缓冲区中的任何数据。
那么,我的问题是:我们如何获得表中的确切行数?目前我正在做:
count=[item[0] for item in client.query('SELECT COUNT(*) FROM `bqtesting.table_streaming`').result()][0]    
但这需要大约 5 秒才能获得计数(并且我需要非常频繁地执行此查询以查看所有流插入是否已“完成”)。
我试图使用 Pyspark 将数据从 BigQuery 数据集连接并获取到本地 Pycharm。
我在 Pycharm 中运行了以下脚本:
from pyspark.sql import SparkSession
spark = SparkSession.builder\
    .config('spark.jars', "C:/Users/PycharmProjects/pythonProject/spark-bigquery-latest.jar")\
    .getOrCreate()
conn = spark.read.format("bigquery")\
    .option("credentialsFile", "C:/Users/PycharmProjects/pythonProject/google-bq-api.json")\
    .option("parentProject", "Google-Project-ID")\
    .option("project", "Dataset-Name")\
    .option("table", "dataset.schema.tablename")\
    .load()
conn.show()
为此我收到以下错误:
Exception in thread "main" java.io.IOException: No FileSystem for scheme: C
    at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2660)
    at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2667)
    at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:94)
    at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2703)
    at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2685)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:373)
    at org.apache.spark.deploy.DependencyUtils$.resolveGlobPath(DependencyUtils.scala:191)
    at org.apache.spark.deploy.DependencyUtils$.$anonfun$resolveGlobPaths$2(DependencyUtils.scala:147)
    at org.apache.spark.deploy.DependencyUtils$.$anonfun$resolveGlobPaths$2$adapted(DependencyUtils.scala:145)
    at scala.collection.TraversableLike.$anonfun$flatMap$1(TraversableLike.scala:245)
    at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:36)
    at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:33)
    at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38)
    at scala.collection.TraversableLike.flatMap(TraversableLike.scala:245)
    at scala.collection.TraversableLike.flatMap$(TraversableLike.scala:242)
    at scala.collection.AbstractTraversable.flatMap(Traversable.scala:108)
    at org.apache.spark.deploy.DependencyUtils$.resolveGlobPaths(DependencyUtils.scala:145)
    at org.apache.spark.deploy.SparkSubmit.$anonfun$prepareSubmitEnvironment$4(SparkSubmit.scala:363)
    at …我有一个这样的表:
| 姓名 | 大批 | 
|---|---|
| 狗 | [吠叫,毛茸茸的] | 
| 猫 | [咕噜声、毛茸茸的、其他] | 
| 破鸭子 | [咕噜声,羽毛] | 
当我使用控件并选择 Purrs 和 Furry 时,我会得到所有三行。期望的结果是只得到猫排。
BQ Name 的底层是一个字符串,Array 实际上是一个Array<struct<type: string, value:string>>eg [{'array_element':'Barks'}],所有type值都等于array_element。
我正在运行以下命令,以从gcs存储桶中删除文件,然后再在其中加载新文件。
gsutil -m rm gs://mybucket/subbucket/*
如果存储桶中没有文件,它将引发“ CommandException:一个或多个URL与对象不匹配”。
我希望它删除文件(如果存在)而不会引发错误。
有相同的错误 gsutil ls gs://mybucket/subbucket/*
如何重写此代码而不必显式处理异常?或者,如何最好地在批处理脚本中处理这些异常?
我的目标是从云存储中读取 avro 文件数据并使用 Java 将其写入 BigQuery 表。如果有人提供代码片段/想法来读取 avro 格式数据并使用 Cloud Dataflow 将其写入 BigQuery 表,那就太好了。
google-cloud-storage google-bigquery google-cloud-dataflow apache-beam
python ×2
sql ×2
apache-beam ×1
apache-spark ×1
gsutil ×1
k-means ×1
pyspark ×1
python-3.x ×1
regex ×1