我正在编写一个Generic类,它尝试将Type T的对象序列化为XML.不幸的是(我相信你知道)并非所有对象都可以成功地序列化为XML,因此我希望能够编写一个约束来指定T只能是一个XML Serializable类.这是可能吗?
很确定这个问题的答案是"不",但想想无论如何我都会问,以防我错过了什么.
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
希望这是相当基本的.我有一个包含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)'需要(数字或日历间隔)类型,而不是日期;"
我试过摆弄但却无处可去.我不能认为这太难了.有人可以帮忙吗?
刚开始熟悉GCP dataproc。我注意到当我使用gcloud dataproc jobs submit pyspark提交工作时spark.submit.deployMode=client。是spark.submit.deployMode=cluster我们的选择吗?
我一直在使用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) 我正在努力确保我清楚了解我的组织如何为 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.271852和3.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)
还是我需要包括其他标签才能获得总成本?
在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 中实现这一点的任何建议?
我正在尝试使用 构建一个 python 轮setuptools。该包需要包含两个文件:
mymodule.py- 与以下目录相同的 python 模块setup.pymyjar.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) 我需要构建一个实际上是命令行的字符串,然后执行该命令行的内容。我希望呼叫运算符 (&) 会有所帮助,但似乎没有。这是一个简单的人为例子。以下按预期工作,它 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、函数、脚本文件或可运行程序的名称。
有没有办法将命令行动态构建为字符串,然后执行它?
我只想验证参数是否只由字母数字字符组成.我试过这个,但它不像我想的那样:
param(
[ValidatePattern('[a-zA-Z0-9]')]$someVariableThatShouldOnlyContainAlphaNumerics = 'something_with_underscores'
)
write-host $someVariableThatShouldOnlyContainAlphaNumerics
Run Code Online (Sandbox Code Playgroud)
返回:
something_with_underscores
我显然遗漏了一些明显的东西.有什么建议?
我已经安装了 powerline,默认配置显示了我当前的 git 分支。我还想显示该分支的状态(暂存/未暂存文件的数量等...)我发现powerline-gitstatus似乎可以完成这项工作,但我不知道如何配置它..
我已将https://github.com/jaspernbrouwer/powerline-gitstatus#configuration中显示的配置条目复制到~/.config/powerline/themes/shell/default.json那里提供的说明中。
下一节指出
然后你可以通过将 Gitstatus 段添加到你的段配置中来激活它,例如在 .config/powerline/themes/shell/default.json 中:
Run Code Online (Sandbox Code Playgroud){ "function": "powerline_gitstatus.gitstatus", "priority": 40 }
该文件 ( .config/powerline/themes/shell/default.json) 不存在,所以我创建了它,添加了该条目,然后重新启动了我的 shell。然而并没有达到预期的效果。我想也许我应该添加相同的条目,.config/powerline/config.json但我不知道把它放在哪里。
如果有人能指导我完成这个,我将不胜感激。
我在带有配置单元的 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
我有这个函数,它打算将一个字符串作为输入,并替换任何不是字母,数字,下划线或破折号的东西:
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-
换句话说,它-正在被替换为 …
apache-spark ×3
powershell ×3
python ×3
pyspark ×2
billing ×1
c# ×1
cookies ×1
fiddler ×1
powerline ×1
regex ×1
sbt ×1
scala ×1
setuptools ×1