小编klu*_*luu的帖子

使用谓词从 pyarrow.parquet.ParquetDataset 过滤行

我有一个存储在 s3 上的镶木地板数据集,我想从数据集中查询特定行。我能够使用petastorm它来做到这一点,但现在我只想使用pyarrow.

这是我的尝试:

import pyarrow.parquet as pq
import s3fs

fs = s3fs.S3FileSystem()

dataset = pq.ParquetDataset(
    'analytics.xxx', 
    filesystem=fs, 
    validate_schema=False, 
    filters=[('event_name', '=', 'SomeEvent')]
)

df = dataset.read_pandas().to_pandas()
Run Code Online (Sandbox Code Playgroud)

但这会返回一个pandas DataFrame,就好像过滤器不起作用一样,即我有具有不同值的行event_name。有什么我遗漏的或我误解的吗?我可以在获得 pandas DataFrame 后进行过滤,但我会使用比需要更多的内存空间。

python amazon-s3 pandas parquet pyarrow

10
推荐指数
4
解决办法
1万
查看次数

在启用 IAM 登录的情况下通过 cloud-sql-proxy 从 Cloud Run 连接到 Cloud SQL

我想使用服务帐号从 Cloud Run 连接到 Cloud SQL 实例。连接过去是在 VPC 内创建的,我们只需向 PostgreSQL 客户端提供带有 auser和 a 的连接字符串。password但现在我们希望身份验证由 Google Cloud IAM 管理,服务帐户与 Cloud Run 服务关联。

在我的机器上,我可以使用enable_iam_login参数来使用我自己的服务帐户。运行 Cloud SQL 代理的命令如下所示:

./cloud_sql_proxy -dir=/cloudsql -instances=[PROJECT-ID]:[REGION]:[INSTANCE] \
-enable_iam_login -credential_file=${HOME}/.config/gcloud/application_default_credentials.json
Run Code Online (Sandbox Code Playgroud)

问题是我似乎找不到使用 IAM 身份验证方法从 Cloud Run 运行 Cloud SQL 代理的方法,我只能提供实例名称。以前有人遇到过这个问题吗?

google-cloud-sql google-cloud-platform cloud-sql-proxy google-cloud-iam google-cloud-run

7
推荐指数
1
解决办法
1820
查看次数

在 jupyter notebook 中使用 pyspark 时如何指定驱动程序类路径?

我想在 jupyter notebook 中使用 pyspark 查询 PostgreSQL。我在 StackOverflow 上浏览了很多问题,但没有一个对我有用,主要是因为答案似乎过时了。这是我的最小代码:

from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
url = 'jdbc:postgresql://host/dbname'
properties = {'user': 'username', 'password': 'pwd'}
df = spark.read.jdbc(url=url, table='tablename', properties=properties)
Run Code Online (Sandbox Code Playgroud)

从笔记本运行它会引发以下错误:

Py4JJavaError: An error occurred while calling o69.jdbc.
: java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getDriver(DriverManager.java:315)
at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions$$anonfun$7.apply(JDBCOptions.scala:85)
at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions$$anonfun$7.apply(JDBCOptions.scala:85)
at scala.Option.getOrElse(Option.scala:121)...
Run Code Online (Sandbox Code Playgroud)

我发现的主要技巧总结在下面的链接中,但不幸的是我无法让它们在我的笔记本中工作:

Pyspark 连接到 ipython notebook 中的 Postgres 数据库

注意:我使用的是 Spark 2.3.1 和 Python 3.6.3,如果我指定了 jar 位置,我可以从 pyspark shell 连接到数据库。

pyspark --driver-class-path /home/.../postgresql.jar --jars /home/.../jars/postgresql.jar
Run Code Online (Sandbox Code Playgroud)

感谢任何可以帮助我解决这个问题的人。

编辑

如何在 IPython Notebook …

python apache-spark pyspark jupyter-notebook

6
推荐指数
1
解决办法
5191
查看次数

Shiny:从名称列表创建一个reactiveValues

是否可以生成一个reactiveValues变量名称由某个列表给出的变量list_of_names?例如,这些变量可以存储指示相应变量的状态的布尔值。

想象一下我有一个清单x

x <- lapply(LETTERS, function(i) TRUE)
names(x) <- LETTERS
Run Code Online (Sandbox Code Playgroud)

我可以生成一个reactiveValues rv行为x类似的x吗?

我没能做到这一点,我能想到的就是这样的:

ui <- fluidPage(
  textOutput("boolean")  
)

server = function(input, output, session){
  nms <- LETTERS[1:10]

  ### lines that I would change
  rv <- reactiveValues(A = TRUE)
  for (n in nms) {rv[[n]] <- TRUE}
  ###

  output$boolean <- renderText(rv[["D"]])
}

shinyApp(ui,server)
Run Code Online (Sandbox Code Playgroud)

它有效,但我确信必须有一种更简单且“更干净”的方法来做到这一点,因为xrv非常相似。感谢任何可以在这方面帮助我的人。

r shiny

5
推荐指数
1
解决办法
1775
查看次数

等效于 tensorflow 中的 enumerate 以在 tf.map_fn 中使用索引

我有一个张量,我使用tf.map_fn. 现在我想将索引作为参数包含在我传递给的函数中tf.map_fn。在 numpy 中,我可以enumerate用来获取该信息并将其传递到我的 lambda 函数中。这是 numpy 中的一个示例,我将 0 添加到第一行,将 1 添加到第二行,依此类推:

a = np.array([[2, 1], [4, 2], [-1, 2]])

def some_function(x, i):
    return x + i

res = map(lambda (i, row): some_function(row, i), enumerate(a))
print(res)

> [array([2, 1]), array([5, 3]), array([1, 4])]
Run Code Online (Sandbox Code Playgroud)

我一直无法enumerate在 tensorflow 中找到等效项,我不知道如何在 tensorflow 中获得相同的结果。有人知道用什么让它在 tensorflow 中工作吗?这是一个示例代码,我在其中的每一行中添加 1 a

import tensorflow as tf

a = tf.constant([[2, 1], [4, 2], [-1, 2]])

with tf.Session() as sess:
    res = tf.map_fn(lambda …
Run Code Online (Sandbox Code Playgroud)

python tensorflow

3
推荐指数
1
解决办法
3387
查看次数

如何更新plotOutput ui对象的大小

我试图调整一个plotOutputui对象的光泽

library(shiny)

ui <- fluidPage(
  fluidRow(
        column(6, numericInput('save.height', "Save height (mm)", value = 50)),
        column(6, numericInput('save.width', "Save width (mm)", value = 43))),
  plotOutput('plot_display', width = '50mm', height = '43mm'))

server <- function(input, output) {
  output$plot_display <- renderPlot({

    ggplot(iris, aes(x = Species, y = Petal.Length)) +
      stat_summary(geom = 'bar', fun.y = mean) +
      geom_point() +
      theme(aspect.ratio = 1)

  })


}

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

我无法找到相当于updateNumericInput()动态更新值的东西plotOutput

r shiny

1
推荐指数
1
解决办法
310
查看次数