小编jam*_*iet的帖子

通用类约束 - 我可以指定Generic类型可以序列化为XML吗?

我正在编写一个Generic类,它尝试将Type T的对象序列化为XML.不幸的是(我相信你知道)并非所有对象都可以成功地序列化为XML,因此我希望能够编写一个约束来指定T只能是一个XML Serializable类.这是可能吗?

很确定这个问题的答案是"不",但想想无论如何我都会问,以防我错过了什么.

c# xml-serialization

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

Invoke-RestMethod 不传递标头

Invoke-RestMethod 遇到了一个非常奇怪的问题。我使用它发送 GET 并在请求中包含一个 cookie:

$getEndpoint = "http://YYYYYYYYYYYYYY/clients/XXXXXX/dev"
$authheader = "auth_tkt=\""XXX"""
Invoke-RestMethod -Headers @{"cookie" = "$authheader"} -Uri $getEndpoint 
Run Code Online (Sandbox Code Playgroud)

如果我查看 Fiddler 中的请求,我会看到以下内容:

GET http://YYYYYYYYYYYYYY/clients/XXXXXX/dev HTTP/1.1 用户代理:Mozilla/5.0(Windows NT;Windows NT 6.1;en-GB) WindowsPowerShell/4.0 主机:YYYYYYYYYYYYYY 连接:保持活动

饼干去哪儿了?沿着管道的某个地方,饼干正在消失。有什么想法吗?我假设我在某个地方误解了某些东西。

如果重要的话,我尝试了来自curl的类似请求,它工作没有问题(即它使用提供的cookie进行身份验证,并且我得到了我期望的响应):

卷曲-H“cookie:auth_tkt = \”XXX“ http://YYYYYYYYYYYYYY/clients/XXXXX/dev

cookies powershell fiddler

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

计算pyspark中两个日期之间的时间

希望这是相当基本的.我有一个包含Date列的Spark数据帧,我想添加一个新列,该列包含自该日期以来的天数.Google fu让我失望了.

这是我尝试过的:

from pyspark.sql.types import *
import datetime
today = datetime.date.today()

schema = StructType([StructField("foo", DateType(), True)])
l = [(datetime.date(2016,12,1),)]
df = sqlContext.createDataFrame(l, schema)
df = df.withColumn('daysBetween',today - df.foo)
df.show()
Run Code Online (Sandbox Code Playgroud)

它失败并出现错误:

由于数据类型不匹配,你"无法解决"(17212 - foo):'(17212 - foo)'需要(数字或日历间隔)类型,而不是日期;"

我试过摆弄但却无处可去.我不能认为这太难了.有人可以帮忙吗?

apache-spark apache-spark-sql pyspark

2
推荐指数
2
解决办法
6853
查看次数

我可以在集群模式下运行dataproc作业吗

刚开始熟悉GCP dataproc。我注意到当我使用gcloud dataproc jobs submit pyspark提交工作时spark.submit.deployMode=client。是spark.submit.deployMode=cluster我们的选择吗?

google-cloud-dataproc

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

在Scala REPL中运行spark时出错 - 访问被拒绝org.apache.derby.security.SystemPermission("engine","usederbyinternals")

我一直在使用IntelliJ来快速使用sbt在Scala中开发Spark应用程序.虽然IntelliJ隐藏了很多脚手架,但是我想了解基本知识,所以我想尝试从命令行中获取并运行(即使用REPL).我正在使用macOS.

这就是我所做的:

mkdir -p ~/tmp/scalasparkrepl
cd !$
echo 'scalaVersion := "2.11.12"' > build.sbt
echo 'libraryDependencies += "org.apache.spark" %% "spark-core" % "2.3.0"' >> build.sbt
echo 'libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.3.0"' >> build.sbt
echo 'libraryDependencies += "org.apache.spark" %% "spark-hive" % "2.3.0"' >> build.sbt
sbt console
Run Code Online (Sandbox Code Playgroud)

这将打开我运行的scala REPL(包括下载所有依赖项):

import org.apache.spark.SparkConf
import org.apache.spark.sql.{SparkSession, DataFrame}
val conf = new SparkConf().setMaster("local[*]")
val spark = SparkSession.builder().appName("spark repl").config(conf).config("spark.sql.warehouse.dir", "~/tmp/scalasparkreplhive").enableHiveSupport().getOrCreate()
spark.range(0, 1000).toDF()
Run Code Online (Sandbox Code Playgroud)

失败并出现错误access denied org.apache.derby.security.SystemPermission( "engine", "usederbyinternals" ):

scala> spark.range(0, 1000).toDF()
18/05/08 11:51:11 INFO SharedState: …
Run Code Online (Sandbox Code Playgroud)

scala sbt apache-spark

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

了解 GCP Dataproc 计费以及它如何受标签影响

我正在努力确保我清楚了解我的组织如何为 Google Cloud Platform Dataproc 付费。

我们已将帐单历史记录导出到 BigQuery,以便我们对其进行分析。今天早上我们运行了两个 dataproc 集群,下面的屏幕截图显示了这两个集群的计费历史的子集。我已经过滤了labels.key = "goog-dataproc-cluster-uuid" or labels.key = "goog-dataproc-cluster-name" or labels.key = "goog-dataproc-location"。这是结果的一个子集

在此处输入图片说明

我已经围绕两种 sku 的成本绘制了方框。让我们来看看在 EMEA项目中运行标准 Intel N1 16 VCPU

我只有两个集群,但对于这两个集群中的每一个,都有三行。原因是每个 dataproc 集群都应用了三个标签,因此成本1.2718523.815556 各出现了 3 次。

我的简单问题是……我如何获得我的 dataproc 集群的总成本?我是将所有这些数字加起来(从而意味着总成本在所有标签上平均分配)还是只取其中一个值(意味着每个标签的成本重复)?


这是我的问题的另一种表述方式。此查询是否给出了运行集群data-dev-dataplatform-dataproc一天的总成本:

SELECT  sum(cost)
FROM [dh-billing-179310:billing.gcp_billing_export_XXXXXXXX] 
WHERE labels.key = "goog-dataproc-cluster-name"
  and labels.value = "data-dev-dataplatform-dataproc" 
  and usage_start_time >= "2018-07-05 00:00:00"
  and usage_end_time <= "2018-07-06 00:00:00"
Run Code Online (Sandbox Code Playgroud)

还是我需要包括其他标签才能获得总成本?

billing google-cloud-platform google-cloud-dataproc

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

bigquery 中的 jsonpath 不支持 @ 作为过滤器。替代方案的建议?

https://jsonpath.curiousconcept.com/使用此 JSON 文档:

[{
    "key": "name",
    "value": "john doe"
}, {
    "key": "age",
    "value": "8"
}, {
    "key": "gender",
    "value": "male"
}]
Run Code Online (Sandbox Code Playgroud)

我可以使用 JsonPath 表达式$[?(@.key=="age")].value来提取["8"]我想要的值。

但是,当我尝试在 bigquery 中使用相同的 JsonPath 时,如下所示:

select JSON_EXTRACT_SCALAR('[{"key": "name","value": "john-doe"}, {"key": "age","value": "8"}, {"key": "gender","value": "male"}]', '$[?(@.key=="age")].value')

我收到一个错误

JSONPath 中不支持的运算符:@

关于如何在 bigquery 中实现这一点的任何建议?

google-bigquery

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

使用 setuptools 在 Python 包中包含额外文件

我正在尝试使用 构建一个 python 轮setuptools。该包需要包含两个文件:

  • mymodule.py- 与以下目录相同的 python 模块setup.py
  • myjar.jar- 存在于我的包目录之外的 java .jar 文件

我正在使用 构建我的包python3 setup.py bdist_wheel

如果我setup()这样调用:

setup(
    name="mypkg",
    py_modules=["mymodule"],
    data_files=[('jars', ['../target/scala-2.11/myjar.jar'])]
)
Run Code Online (Sandbox Code Playgroud)

然后myjar.jar确实成功地包含在 .whl 中(到目前为止还不错),但是当我pip install mypkg将罐子放在/usr/local/myjar.jar有点解释了原因)时,这根本不是我想要的,我希望它存在于与 相同的位置mymodule.py,即/usr/local/lib/python3.7/site-packages/

如果我setup.py改为

setup(
    name="mypkg",
    py_modules=["mymodule"],
    package_data={'jars': '../target/scala-2.11/myjar.jar'}
)
Run Code Online (Sandbox Code Playgroud)

或者

setup(
    name="mypkg",
    py_modules=["mymodule"],
    package_data={'jars': ['../target/scala-2.11/myjar.jar']}
)
Run Code Online (Sandbox Code Playgroud)

那么myjar.jar根本不包含在 .whl 中。我尝试复制myjar.jar到同一目录并更改setup.py为:

setup(
    name="mypkg",
    py_modules=["mymodule"],
    package_data={'jars': 'myjar.jar'} …
Run Code Online (Sandbox Code Playgroud)

python setuptools

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

构建要传递给调用运算符的字符串

我需要构建一个实际上是命令行的字符串,然后执行该命令行的内容。我希望呼叫运算符 (&) 会有所帮助,但似乎没有。这是一个简单的人为例子。以下按预期工作,它 ping 一个网站:

$command = "ping"
$website = "www.bbc.co.uk"
& $command $website
Run Code Online (Sandbox Code Playgroud)

但是,如果我将其更改为:

$command = "ping"
$website = "www.bbc.co.uk"
$cmd = "$command $website"
& $cmd
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

术语“ping www.bbc.co.uk”不被识别为 cmdlet、函数、脚本文件或可运行程序的名称。

有没有办法将命令行动态构建为字符串,然后执行它?

powershell

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

验证PowerShell参数是否为字母数字

我只想验证参数是否只由字母数字字符组成.我试过这个,但它不像我想的那样:

param(
    [ValidatePattern('[a-zA-Z0-9]')]$someVariableThatShouldOnlyContainAlphaNumerics = 'something_with_underscores'
)
write-host $someVariableThatShouldOnlyContainAlphaNumerics
Run Code Online (Sandbox Code Playgroud)

返回:

something_with_underscores

我显然遗漏了一些明显的东西.有什么建议?

powershell

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

配置 powerline 以显示 git 状态

我已经安装了 powerline,默认配置显示了我当前的 git 分支。我还想显示该分支的状态(暂存/未暂存文件的数量等...)我发现powerline-gitstatus似乎可以完成这项工作,但我不知道如何配置它..

我已将https://github.com/jaspernbrouwer/powerline-gitstatus#configuration中显示的配置条目复制到~/.config/powerline/themes/shell/default.json那里提供的说明中。

下一节指出

然后你可以通过将 Gitstatus 段添加到你的段配置中来激活它,例如在 .config/powerline/themes/shell/default.json 中:

{  
   "function": "powerline_gitstatus.gitstatus",  
   "priority": 40  
}
Run Code Online (Sandbox Code Playgroud)

该文件 ( .config/powerline/themes/shell/default.json) 不存在,所以我创建了它,添加了该条目,然后重新启动了我的 shell。然而并没有达到预期的效果。我想也许我应该添加相同的条目,.config/powerline/config.json但我不知道把它放在哪里。

如果有人能指导我完成这个,我将不胜感激。

powerline

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

从 pyspark 会话中获取 hive 和 hadoop 版本

我在带有配置单元的 hadoop 集群上使用 pyspark。我知道可以从命令行 ( spark-submit --version, hive --version, hadoop version)获取 spark、hive 和 hadoop 版本,但是我如何从 pyspark 中执行相同操作?

获得 spark 版本很容易:

print("Spark version = ".format(spark._sc.version))
Run Code Online (Sandbox Code Playgroud)

我不知道如何获得 hive & hadoop 版本。有人知道吗?TIA

python apache-spark pyspark

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

正则表达式替换除小写字母,数字字符,下划线和短划线之外的所有内容

我有这个函数,它打算将一个字符串作为输入,并替换任何不是字母,数字,下划线或破折号的东西:

def clean_label_value(label_value):
    """
    GCP Label values have to follow strict guidelines
        Keys and values can only contain lowercase letters, numeric characters, underscores,
        and dashes. International characters are allowed.
    https://cloud.google.com/compute/docs/labeling-resources#restrictions
    :param label_value: label value that needs to be cleaned up
    :return: cleaned label value
    """
    full_pattern = re.compile('[^a-zA-Z0-9]')
    return re.sub(full_pattern, '_', label_value).lower()
Run Code Online (Sandbox Code Playgroud)

我有这个单元测试,成功了

def test_clean_label_value(self):
    self.assertEqual(clean_label_value('XYZ_@:.;\\/,'), 'xyz________')
Run Code Online (Sandbox Code Playgroud)

然而它取代破折号,我不想要它.展示:

def clean_label_value(label_value):
    full_pattern = re.compile('[^a-zA-Z0-9]|-')
    return re.sub(full_pattern, '_', label_value).lower()
Run Code Online (Sandbox Code Playgroud)

但是这个:

def test_clean_label_value(self):
    self.assertEqual(clean_label_value('XYZ-'), 'xyz-')
Run Code Online (Sandbox Code Playgroud)

然后失败了

xyz-!= xyz_

预期:xyz_
实际:xyz-

换句话说,它-正在被替换为 …

python regex

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