我看到Foundry平台有Slate和Workshop。我可以知道我们可以使用 Workshop 和 Slate 的真实商业案例吗?这些有什么不同,这些在哪里最适合?任何人都可以对此有所了解吗?
我有一个数据源,每天都会提供一个大的 .txt 文件(50-75GB)。该文件包含多个不同的模式,其中每一行对应一个模式。我想将其拆分为每个模式的分区数据集,如何有效地做到这一点?
我已经通过数据连接将一个包含 100,000 个大约 100GB 的原始 json 文件的数据集导入到代工厂中。我想使用Python Transforms raw file access转换来读取文件,将结构和结构的数组展平到数据帧中,作为对 df 的增量更新。我想使用来自 *.json 文件的文档中的以下示例中的内容,并将其转换为使用@incremental()装饰器更新的增量。
>>> import csv
>>> from pyspark.sql import Row
>>> from transforms.api import transform, Input, Output
>>>
>>> @transform(
... processed=Output('/examples/hair_eye_color_processed'),
... hair_eye_color=Input('/examples/students_hair_eye_color_csv'),
... )
... def example_computation(hair_eye_color, processed):
...
... def process_file(file_status):
... with hair_eye_color.filesystem().open(file_status.path) as f:
... r = csv.reader(f)
...
... # Construct a pyspark.Row from our header row
... header = next(r)
... MyRow = Row(*header)
...
... …Run Code Online (Sandbox Code Playgroud) pyspark palantir-foundry foundry-code-repositories foundry-code-workbooks
groupby在我的主要转换中,我通过执行 a然后applyInPandas在 Foundry 中运行算法。构建需要很长时间,一种想法是使用哈希分区/分桶来组织文件以防止随机读取和排序。
对于 mcve,我有以下数据集:
def example_df():
return spark.createDataFrame(
[("1","2", 1.0), ("1","3", 2.0), ("2","4", 3.0), ("2","5", 5.0), ("2","2", 10.0)],
("id_1","id_2", "v"))
Run Code Online (Sandbox Code Playgroud)
我想要应用的变换是:
def df1(example_df):
def subtract_mean(pdf):
v = pdf.v
return pdf.assign(v=v - v.mean())
return example_df.groupby("id_1","id_2").applyInPandas(subtract_mean, schema="id_1 string, id_2 string, v double")
Run Code Online (Sandbox Code Playgroud)
当我查看没有分区的原始查询计划时,它看起来如下所示:
物理计划:
Execute FoundrySaveDatasetCommand `ri.foundry.main.transaction.00000059-eb1b-61f4-bdb8-a030ac6baf0a@master`.`ri.foundry.main.dataset.eb664037-fcae-4ce2-b92b-bd103cd504b3`, ErrorIfExists, [id_1, id_2, v], ComputedStatsServiceV2Blocking{_endpointChannelFactory=DialogueChannel@3127a629{channelName=dialogue-nonreloading-ComputedStatsServiceV2Blocking, delegate=com.palantir.dialogue.core.DialogueChannel$Builder$$Lambda$713/0x0000000800807c40@70f51090}, runtime=com.palantir.conjure.java.dialogue.serde.DefaultConjureRuntime@6c67a62a}, com.palantir.foundry.spark.catalog.caching.CachingSchemaService@7d881feb, com.palantir.foundry.spark.catalog.caching.CachingMetadataService@57a1ef9e, com.palantir.foundry.spark.catalog.FoundrySparkResolver@4d38f6f5, com.palantir.foundry.spark.auth.DefaultFoundrySparkAuthSupplier@21103ab4
+- AdaptiveSparkPlan isFinalPlan=true
+- == Final Plan ==
*(3) BasicStats `ri.foundry.main.transaction.00000059-eb1b-61f4-bdb8-a030ac6baf0a@master`.`ri.foundry.main.dataset.eb664037-fcae-4ce2-b92b-bd103cd504b3`
+- FlatMapGroupsInPandas [id_1#487, id_2#488], subtract_mean(id_1#487, id_2#488, v#489), [id_1#497, …Run Code Online (Sandbox Code Playgroud) partitioning apache-spark pyspark palantir-foundry foundry-code-repositories
Within Palantir Foundry platform, I am working in Data integration. I need some help as I am new to Palantir software. Is there any documents, white-papers, links or tutorials on this topic?
How do I integrate data from another source, for example Amazon S3 or HDFS?
amazon-s3 apache-spark palantir-foundry foundry-data-connection
我正在探索 Palantir Foundry 平台,它似乎有大量针对矩形数据或结构化数据的选项。有人有在 Foundry 平台上处理非结构化大数据的经验吗?我们如何使用 Foundry 进行图像分析?
我有一个由对象支持的 Foundry Form,能够对其进行更改。我需要授予我的同事什么权限才能编辑表单?表单上的编辑器是否足够,或者他们是否还需要成为对象的编辑器?
我的 Foundry 实例中有一个管道设置,它使用增量计算,但由于某种原因没有达到我的预期。也就是说,我想读取转换的先前输出并获取日期的最大值,然后仅读取紧随该最大日期之后的数据的输入。
由于某种原因,它没有达到我的预期,并且在构建/分析/修改代码过程中逐步执行代码非常令人沮丧。
我的代码如下所示:
from pypsark.sql import functions as F, types as T, DataFrame
from transforms.api import transform, Input, Output, incremental
from datetime import date, timedelta
JUMP_DAYS = 1
START_DATE = date(year=2021, month=10, day=1)
OUTPUT_SCHEMA = T.StructType([
T.StructField("date", T.DateType()),
T.StructField("value", T.IntegerType())
])
@incremental(semantic_version=1)
@transform(
my_input=Input("/path/to/my/input"),
my_output=Output("/path/to/my/output")
)
def only_write_one_day(my_input, my_output):
"""Filter the input to only rows that are a day after the last written output and process them"""
# Get the previous output and full current input
previous_output_df = …Run Code Online (Sandbox Code Playgroud) palantir-foundry foundry-code-repositories foundry-python-transform
我有一个场景,我有多个输入和多个输出,我想在 python 中实现transform。我知道 Palantir Foundry 不支持多个输出,但它支持多个输入。我怎样才能实现这个目标?
我需要在 Palantir Foundry 的代码工作簿中合并两个数据集,但我不知道该怎么做。我想使用 Pyspark 来做到这一点。我是Foundry新手,请帮忙!
python union pyspark palantir-foundry foundry-code-workbooks
palantir-foundry ×10
pyspark ×3
apache-spark ×2
amazon-s3 ×1
partitioning ×1
python ×1
union ×1